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:
Evan Cheng 2006-07-06 01:53:36 +00:00
parent d1c930c801
commit 0441746468
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 /// 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 {

View File

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