[llvm-commits] CVS: llvm/lib/Target/TargetMachine.cpp

Evan Cheng evan.cheng at apple.com
Wed Feb 22 12:19:56 PST 2006



Changes in directory llvm/lib/Target:

TargetMachine.cpp updated: 1.41 -> 1.42
---
Log message:

- Added option -relocation-model to set relocation model. Valid values include static, pic,
dynamic-no-pic, and default.
PPC and x86 default is dynamic-no-pic for Darwin, pic for others.
- Removed options -enable-pic and -ppc-static.


---
Diffs of the changes:  (+28 -6)

 TargetMachine.cpp |   34 ++++++++++++++++++++++++++++------
 1 files changed, 28 insertions(+), 6 deletions(-)


Index: llvm/lib/Target/TargetMachine.cpp
diff -u llvm/lib/Target/TargetMachine.cpp:1.41 llvm/lib/Target/TargetMachine.cpp:1.42
--- llvm/lib/Target/TargetMachine.cpp:1.41	Thu Aug 18 18:53:15 2005
+++ llvm/lib/Target/TargetMachine.cpp	Wed Feb 22 14:19:42 2006
@@ -12,6 +12,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/Target/TargetMachine.h"
+#include "llvm/Target/TargetOptions.h"
 #include "llvm/Type.h"
 #include "llvm/CodeGen/IntrinsicLowering.h"
 #include "llvm/Support/CommandLine.h"
@@ -26,7 +27,7 @@
   bool NoFramePointerElim;
   bool NoExcessFPPrecision;
   bool UnsafeFPMath;
-  bool PICEnabled;
+  Reloc::Model RelocationModel;
 };
 namespace {
   cl::opt<bool, true> PrintCode("print-machineinstrs",
@@ -48,11 +49,22 @@
                cl::desc("Enable optimizations that may decrease FP precision"),
                cl::location(UnsafeFPMath),
                cl::init(false));
-  cl::opt<bool, true>
-  EnablePIC("enable-pic",
-               cl::desc("Enable generation of position independant code"),
-               cl::location(PICEnabled),
-               cl::init(false));
+  cl::opt<llvm::Reloc::Model, true>
+  DefRelocationModel(
+    "relocation-model",
+    cl::desc("Choose relocation model"),
+    cl::location(RelocationModel),
+    cl::init(Reloc::Default),
+    cl::values(
+      clEnumValN(Reloc::Default, "default",
+                 "Target default relocation model"),
+      clEnumValN(Reloc::Static, "static",
+                 "Non-relocatable code"),
+      clEnumValN(Reloc::PIC, "pic",
+                 "Fully relocatable, position independent code"),
+      clEnumValN(Reloc::DynamicNoPIC, "dynamic-no-pic",
+                 "Relocatable external references, non-relocatable code"),
+      clEnumValEnd));
 };
 
 //---------------------------------------------------------------------------
@@ -87,3 +99,13 @@
   delete IL;
 }
 
+/// getRelocationModel - Returns the code generation relocation model. The
+/// choices are static, PIC, and dynamic-no-pic, and target default.
+Reloc::Model TargetMachine::getRelocationModel() {
+  return RelocationModel;
+}
+
+/// setRelocationModel - Sets the code generation relocation model.
+void TargetMachine::setRelocationModel(Reloc::Model Model) {
+  RelocationModel = Model;
+}






More information about the llvm-commits mailing list