X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FTargetMachine.cpp;h=b4969ca011b71b2c4c016b49917eb64d5f2f5498;hb=44d23825d61d530b8d562329ec8fc2d4f843bb8d;hp=8ed0639a96afbd84a44578baad7d8b068b623e87;hpb=66d6ee4247aa17b3019eb42f07b3842250b6f990;p=oota-llvm.git diff --git a/lib/Target/TargetMachine.cpp b/lib/Target/TargetMachine.cpp index 8ed0639a96a..b4969ca011b 100644 --- a/lib/Target/TargetMachine.cpp +++ b/lib/Target/TargetMachine.cpp @@ -1,64 +1,108 @@ //===-- TargetMachine.cpp - General Target Information ---------------------==// -// +// // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. -// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// //===----------------------------------------------------------------------===// // // This file describes the general parts of a Target machine. // //===----------------------------------------------------------------------===// -#include "llvm/Type.h" -#include "llvm/CodeGen/IntrinsicLowering.h" +#include "llvm/MC/MCAsmInfo.h" #include "llvm/Target/TargetMachine.h" -#include "Support/CommandLine.h" +#include "llvm/Target/TargetOptions.h" +#include "llvm/Support/CommandLine.h" using namespace llvm; //--------------------------------------------------------------------------- // Command-line options that tend to be useful on more than one back-end. // -namespace llvm { - bool PrintMachineCode; - bool NoFramePointerElim; -}; - -namespace { - cl::opt PrintCode("print-machineinstrs", - cl::desc("Print generated machine code"), - cl::location(PrintMachineCode), cl::init(false)); +namespace llvm { + bool HasDivModLibcall; + bool AsmVerbosityDefault(false); +} - cl::opt - DisableFPElim("disable-fp-elim", - cl::desc("Disable frame pointer elimination optimization"), - cl::location(NoFramePointerElim), - cl::init(false)); -}; +static cl::opt +DataSections("fdata-sections", + cl::desc("Emit data into separate sections"), + cl::init(false)); +static cl::opt +FunctionSections("ffunction-sections", + cl::desc("Emit functions into separate sections"), + cl::init(false)); //--------------------------------------------------------------------------- // TargetMachine Class // -TargetMachine::TargetMachine(const std::string &name, IntrinsicLowering *il, - bool LittleEndian, - unsigned char PtrSize, unsigned char PtrAl, - unsigned char DoubleAl, unsigned char FloatAl, - unsigned char LongAl, unsigned char IntAl, - unsigned char ShortAl, unsigned char ByteAl) - : Name(name), DataLayout(name, LittleEndian, - PtrSize, PtrAl, DoubleAl, FloatAl, LongAl, - IntAl, ShortAl, ByteAl) { - IL = il ? il : new DefaultIntrinsicLowering(); -} -TargetMachine::TargetMachine(const std::string &name, IntrinsicLowering *il, - const Module &M) - : Name(name), DataLayout(name, &M) { - IL = il ? il : new DefaultIntrinsicLowering(); + +TargetMachine::TargetMachine(const Target &T, + StringRef TT, StringRef CPU, StringRef FS, + const TargetOptions &Options) + : TheTarget(T), TargetTriple(TT), TargetCPU(CPU), TargetFS(FS), + CodeGenInfo(0), AsmInfo(0), + MCRelaxAll(false), + MCNoExecStack(false), + MCSaveTempLabels(false), + MCUseLoc(true), + MCUseCFI(true), + MCUseDwarfDirectory(false), + Options(Options) { } TargetMachine::~TargetMachine() { - delete IL; + delete CodeGenInfo; + delete AsmInfo; +} + +/// getRelocationModel - Returns the code generation relocation model. The +/// choices are static, PIC, and dynamic-no-pic, and target default. +Reloc::Model TargetMachine::getRelocationModel() const { + if (!CodeGenInfo) + return Reloc::Default; + return CodeGenInfo->getRelocationModel(); +} + +/// getCodeModel - Returns the code model. The choices are small, kernel, +/// medium, large, and target default. +CodeModel::Model TargetMachine::getCodeModel() const { + if (!CodeGenInfo) + return CodeModel::Default; + return CodeGenInfo->getCodeModel(); +} + +/// getOptLevel - Returns the optimization level: None, Less, +/// Default, or Aggressive. +CodeGenOpt::Level TargetMachine::getOptLevel() const { + if (!CodeGenInfo) + return CodeGenOpt::Default; + return CodeGenInfo->getOptLevel(); +} + +bool TargetMachine::getAsmVerbosityDefault() { + return AsmVerbosityDefault; +} + +void TargetMachine::setAsmVerbosityDefault(bool V) { + AsmVerbosityDefault = V; +} + +bool TargetMachine::getFunctionSections() { + return FunctionSections; +} + +bool TargetMachine::getDataSections() { + return DataSections; +} + +void TargetMachine::setFunctionSections(bool V) { + FunctionSections = V; +} + +void TargetMachine::setDataSections(bool V) { + DataSections = V; }