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
This commit is contained in:
Evan Cheng 2006-07-06 01:53:36 +00:00
parent 9e4692c617
commit 152ed05353
2 changed files with 48 additions and 0 deletions

View 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 {

View 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),