about summary refs log tree commit diff
path: root/src/rustllvm/PassWrapper.cpp
diff options
context:
space:
mode:
authorSamuel Holland <samuel@sholland.org>2019-11-03 10:52:00 -0600
committerSamuel Holland <samuel@sholland.org>2019-11-03 10:52:00 -0600
commit194307936110470487c41637684d4b09b3516af5 (patch)
tree3c1551ab6b4b7ce75b25c9410a188d2cc3dbdc81 /src/rustllvm/PassWrapper.cpp
parent91fd6283e658e2c7aab2d3f5206fc1891f486af2 (diff)
downloadrust-194307936110470487c41637684d4b09b3516af5.tar.gz
rust-194307936110470487c41637684d4b09b3516af5.zip
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 0cda3465dc0..4c5bc20b86d 100644
--- a/src/rustllvm/PassWrapper.cpp
+++ b/src/rustllvm/PassWrapper.cpp
@@ -754,6 +754,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);
 }