summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/TargetMachine.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2006-07-06 01:53:36 +0000
committerEvan Cheng <evan.cheng@apple.com>2006-07-06 01:53:36 +0000
commit044174646843ea34593f48666ad90fcf110bf2c5 (patch)
tree5a194623341667ad5352691715413af503595428 /llvm/lib/Target/TargetMachine.cpp
parentd1c930c8019278744510384621c64867a94eea99 (diff)
downloadbcm5719-llvm-044174646843ea34593f48666ad90fcf110bf2c5.tar.gz
bcm5719-llvm-044174646843ea34593f48666ad90fcf110bf2c5.zip
Added option -code-model to set code model (only used in 64-bit) mode. Valid
values include small, kernel, medium, large, and default. llvm-svn: 29009
Diffstat (limited to 'llvm/lib/Target/TargetMachine.cpp')
-rw-r--r--llvm/lib/Target/TargetMachine.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/llvm/lib/Target/TargetMachine.cpp b/llvm/lib/Target/TargetMachine.cpp
index 507253722e2..1fbad7d19ab 100644
--- a/llvm/lib/Target/TargetMachine.cpp
+++ b/llvm/lib/Target/TargetMachine.cpp
@@ -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),
OpenPOWER on IntegriCloud