Added option -code-model to set code model (only used in 64-bit) mode. Valid
authorEvan Cheng <evan.cheng@apple.com>
Thu, 6 Jul 2006 01:53:36 +0000 (01:53 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Thu, 6 Jul 2006 01:53:36 +0000 (01:53 +0000)
values include small, kernel, medium, large, and default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29009 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetMachine.h
lib/Target/TargetMachine.cpp

index 53912faefd24cee7d2bdd76debab9079a36325d4..0b1cb3866d2e25c120cd2e97e7d2dd7242f5dc91 100644 (file)
@@ -44,6 +44,17 @@ namespace Reloc {
   };
 }
 
+// Code model types.
+namespace CodeModel {
+  enum Model {
+    Default,
+    Small,
+    Kernel,
+    Medium,
+    Large
+  };
+}
+
 //===----------------------------------------------------------------------===//
 ///
 /// TargetMachine - Primary interface to the complete machine description for
@@ -132,6 +143,13 @@ public:
   /// setRelocationModel - Sets the code generation relocation model.
   static void setRelocationModel(Reloc::Model Model);
 
+  /// getCodeModel - Returns the code model. The choices are small, kernel,
+  /// medium, large, and target default.
+  static CodeModel::Model getCodeModel();
+
+  /// setCodeModel - Sets the code model.
+  static void setCodeModel(CodeModel::Model Model);
+
   /// CodeGenFileType - These enums are meant to be passed into
   /// addPassesToEmitFile to indicate what type of file to emit.
   enum CodeGenFileType {
index 507253722e21e354a5de104682b20cb0be0760fc..1fbad7d19ab968df020a981a6c6e84e13c7e3986 100644 (file)
@@ -28,6 +28,7 @@ namespace llvm {
   bool UnsafeFPMath;
   bool FiniteOnlyFPMathOption;
   Reloc::Model RelocationModel;
+  CodeModel::Model CMModel;
 }
 namespace {
   cl::opt<bool, true> PrintCode("print-machineinstrs",
@@ -70,6 +71,24 @@ namespace {
       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 @@ void TargetMachine::setRelocationModel(Reloc::Model Model) {
   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),