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

Evan Cheng evan.cheng at apple.com
Wed Jul 5 18:53:49 PDT 2006



Changes in directory llvm/lib/Target:

TargetMachine.cpp updated: 1.48 -> 1.49
---
Log message:

Added option -code-model to set code model (only used in 64-bit) mode. Valid
values include small, kernel, medium, large, and default.


---
Diffs of the changes:  (+30 -0)

 TargetMachine.cpp |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+)


Index: llvm/lib/Target/TargetMachine.cpp
diff -u llvm/lib/Target/TargetMachine.cpp:1.48 llvm/lib/Target/TargetMachine.cpp:1.49
--- llvm/lib/Target/TargetMachine.cpp:1.48	Wed May 24 14:05:21 2006
+++ llvm/lib/Target/TargetMachine.cpp	Wed Jul  5 20:53:35 2006
@@ -28,6 +28,7 @@
   bool UnsafeFPMath;
   bool FiniteOnlyFPMathOption;
   Reloc::Model RelocationModel;
+  CodeModel::Model CMModel;
 }
 namespace {
   cl::opt<bool, true> PrintCode("print-machineinstrs",
@@ -70,6 +71,24 @@
       clEnumValN(Reloc::DynamicNoPIC, "dynamic-no-pic",
                  "Relocatable external references, non-relocatable code"),
       clEnumValEnd));
+  cl::opt<llvm::CodeModel::Model, true>
+  DefCodeModel(
+    "code-model",
+    cl::desc("Choose relocation model"),
+    cl::location(CMModel),
+    cl::init(CodeModel::Default),
+    cl::values(
+      clEnumValN(CodeModel::Default, "default",
+                 "Target default code model"),
+      clEnumValN(CodeModel::Small, "small",
+                 "Small code model"),
+      clEnumValN(CodeModel::Kernel, "kernel",
+                 "Kernel code model"),
+      clEnumValN(CodeModel::Medium, "medium",
+                 "Medium code model"),
+      clEnumValN(CodeModel::Large, "large",
+                 "Large code model"),
+      clEnumValEnd));
 }
 
 //---------------------------------------------------------------------------
@@ -94,6 +113,17 @@
   RelocationModel = Model;
 }
 
+/// getCodeModel - Returns the code model. The choices are small, kernel,
+/// medium, large, and target default.
+CodeModel::Model TargetMachine::getCodeModel() {
+  return CMModel;
+}
+
+/// setCodeModel - Sets the code model.
+void TargetMachine::setCodeModel(CodeModel::Model Model) {
+  CMModel = Model;
+}
+
 namespace llvm {
   /// FiniteOnlyFPMath - This returns true when the -enable-finite-only-fp-math
   /// option is specified on the command line. If this returns false (default),






More information about the llvm-commits mailing list