about summary refs log tree commit diff
path: root/src/rustllvm/PassWrapper.cpp
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-11-06 07:03:06 +0100
committerGitHub <noreply@github.com>2019-11-06 07:03:06 +0100
commit98cbe179032726052d672334bb1a82cd4f604072 (patch)
tree7aad9d845091438f33d1975cc1a54f923c44d035 /src/rustllvm/PassWrapper.cpp
parent81550a00d1e8f83bbaef31205e72b27fdb796d35 (diff)
parent194307936110470487c41637684d4b09b3516af5 (diff)
downloadrust-98cbe179032726052d672334bb1a82cd4f604072.tar.gz
rust-98cbe179032726052d672334bb1a82cd4f604072.zip
Rollup merge of #66062 - smaeul:patch/pic-level, r=estebank
Configure LLVM module PIC level

As of LLVM 9, this is required for 32-bit PowerPC to properly generate
PLT references. Previously, only BigPIC was supported; now LLVM supports
both BigPIC and SmallPIC, and there is no default value provided.
Diffstat (limited to 'src/rustllvm/PassWrapper.cpp')
-rw-r--r--src/rustllvm/PassWrapper.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp
index 5b3900ab496..3451346869d 100644
--- a/src/rustllvm/PassWrapper.cpp
+++ b/src/rustllvm/PassWrapper.cpp
@@ -755,6 +755,10 @@ LLVMRustSetDataLayoutFromTargetMachine(LLVMModuleRef Module,
   unwrap(Module)->setDataLayout(Target->createDataLayout());
 }
 
+extern "C" void LLVMRustSetModulePICLevel(LLVMModuleRef M) {
+  unwrap(M)->setPICLevel(PICLevel::Level::BigPIC);
+}
+
 extern "C" void LLVMRustSetModulePIELevel(LLVMModuleRef M) {
   unwrap(M)->setPIELevel(PIELevel::Level::Large);
 }