diff options
author | Evan Cheng <evan.cheng@apple.com> | 2006-07-06 01:53:36 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2006-07-06 01:53:36 +0000 |
commit | 152ed053533b26194362994398c0ffad7e1c4109 (patch) | |
tree | dc1b5f01186e5c8cc1cdeb61a07467d95afb2b60 | |
parent | 9e4692c61752313a01486594e8e1ccf573ad4a47 (diff) | |
download | external_llvm-152ed053533b26194362994398c0ffad7e1c4109.zip external_llvm-152ed053533b26194362994398c0ffad7e1c4109.tar.gz external_llvm-152ed053533b26194362994398c0ffad7e1c4109.tar.bz2 |
Added option -code-model to set code model (only used in 64-bit) mode. Valid
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
-rw-r--r-- | include/llvm/Target/TargetMachine.h | 18 | ||||
-rw-r--r-- | lib/Target/TargetMachine.cpp | 30 |
2 files changed, 48 insertions, 0 deletions
diff --git a/include/llvm/Target/TargetMachine.h b/include/llvm/Target/TargetMachine.h index 53912fa..0b1cb38 100644 --- a/include/llvm/Target/TargetMachine.h +++ b/include/llvm/Target/TargetMachine.h @@ -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 { diff --git a/lib/Target/TargetMachine.cpp b/lib/Target/TargetMachine.cpp index 5072537..1fbad7d 100644 --- a/lib/Target/TargetMachine.cpp +++ b/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), |