forked from OSchip/llvm-project
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
This commit is contained in:
parent
d1c930c801
commit
0441746468
|
@ -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
|
/// TargetMachine - Primary interface to the complete machine description for
|
||||||
|
@ -132,6 +143,13 @@ public:
|
||||||
/// setRelocationModel - Sets the code generation relocation model.
|
/// setRelocationModel - Sets the code generation relocation model.
|
||||||
static void setRelocationModel(Reloc::Model 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
|
/// CodeGenFileType - These enums are meant to be passed into
|
||||||
/// addPassesToEmitFile to indicate what type of file to emit.
|
/// addPassesToEmitFile to indicate what type of file to emit.
|
||||||
enum CodeGenFileType {
|
enum CodeGenFileType {
|
||||||
|
|
|
@ -28,6 +28,7 @@ namespace llvm {
|
||||||
bool UnsafeFPMath;
|
bool UnsafeFPMath;
|
||||||
bool FiniteOnlyFPMathOption;
|
bool FiniteOnlyFPMathOption;
|
||||||
Reloc::Model RelocationModel;
|
Reloc::Model RelocationModel;
|
||||||
|
CodeModel::Model CMModel;
|
||||||
}
|
}
|
||||||
namespace {
|
namespace {
|
||||||
cl::opt<bool, true> PrintCode("print-machineinstrs",
|
cl::opt<bool, true> PrintCode("print-machineinstrs",
|
||||||
|
@ -70,6 +71,24 @@ namespace {
|
||||||
clEnumValN(Reloc::DynamicNoPIC, "dynamic-no-pic",
|
clEnumValN(Reloc::DynamicNoPIC, "dynamic-no-pic",
|
||||||
"Relocatable external references, non-relocatable code"),
|
"Relocatable external references, non-relocatable code"),
|
||||||
clEnumValEnd));
|
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;
|
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 {
|
namespace llvm {
|
||||||
/// FiniteOnlyFPMath - This returns true when the -enable-finite-only-fp-math
|
/// FiniteOnlyFPMath - This returns true when the -enable-finite-only-fp-math
|
||||||
/// option is specified on the command line. If this returns false (default),
|
/// option is specified on the command line. If this returns false (default),
|
||||||
|
|
Loading…
Reference in New Issue