X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FHexagon%2FHexagonTargetMachine.cpp;h=48b0bc8baf3848a03749e750abb50224060e43d4;hb=ceb915026871b0d1e78267030702789df1d2fac5;hp=52aff2787bacdcb33428c3bf27da1714778989ef;hpb=71f56c4aac3a6062738f95eeff42ba54f549d0cc;p=oota-llvm.git diff --git a/lib/Target/Hexagon/HexagonTargetMachine.cpp b/lib/Target/Hexagon/HexagonTargetMachine.cpp index 52aff2787ba..48b0bc8baf3 100644 --- a/lib/Target/Hexagon/HexagonTargetMachine.cpp +++ b/lib/Target/Hexagon/HexagonTargetMachine.cpp @@ -17,8 +17,8 @@ #include "HexagonMachineScheduler.h" #include "HexagonTargetObjectFile.h" #include "llvm/CodeGen/Passes.h" +#include "llvm/IR/LegacyPassManager.h" #include "llvm/IR/Module.h" -#include "llvm/PassManager.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/TargetRegistry.h" #include "llvm/Transforms/IPO/PassManagerBuilder.h" @@ -29,10 +29,6 @@ using namespace llvm; static cl:: opt DisableHardwareLoops("disable-hexagon-hwloops", cl::Hidden, cl::desc("Disable Hardware Loops for Hexagon target")); -static cl::opt DisableHexagonMISched("disable-hexagon-misched", - cl::Hidden, cl::ZeroOrMore, cl::init(false), - cl::desc("Disable Hexagon MI Scheduling")); - static cl::opt DisableHexagonCFGOpt("disable-hexagon-cfgopt", cl::Hidden, cl::ZeroOrMore, cl::init(false), cl::desc("Disable Hexagon CFG Optimization")); @@ -69,7 +65,8 @@ HexagonTargetMachine::HexagonTargetMachine(const Target &T, StringRef TT, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL) - : LLVMTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL), + : LLVMTargetMachine(T, "e-m:e-p:32:32-i1:32-i64:64-a:0-n32", TT, CPU, FS, + Options, RM, CM, OL), TLOF(make_unique()), Subtarget(TT, CPU, FS, *this) { initAsmInfo(); @@ -82,16 +79,7 @@ namespace { class HexagonPassConfig : public TargetPassConfig { public: HexagonPassConfig(HexagonTargetMachine *TM, PassManagerBase &PM) - : TargetPassConfig(TM, PM) { - // FIXME: Rather than calling enablePass(&MachineSchedulerID) below, define - // HexagonSubtarget::enableMachineScheduler() { return true; }. - // That will bypass the SelectionDAG VLIW scheduler, which is probably just - // hurting compile time and will be removed eventually anyway. - if (DisableHexagonMISched) - disablePass(&MachineSchedulerID); - else - enablePass(&MachineSchedulerID); - } + : TargetPassConfig(TM, PM) {} HexagonTargetMachine &getHexagonTargetMachine() const { return getTM(); @@ -138,33 +126,26 @@ void HexagonPassConfig::addPreRegAlloc() { } void HexagonPassConfig::addPostRegAlloc() { - const HexagonTargetMachine &TM = getHexagonTargetMachine(); if (getOptLevel() != CodeGenOpt::None) if (!DisableHexagonCFGOpt) - addPass(createHexagonCFGOptimizer(TM), false); + addPass(createHexagonCFGOptimizer(), false); } void HexagonPassConfig::addPreSched2() { - const HexagonTargetMachine &TM = getHexagonTargetMachine(); - addPass(createHexagonCopyToCombine(), false); if (getOptLevel() != CodeGenOpt::None) addPass(&IfConverterID, false); - addPass(createHexagonSplitConst32AndConst64(TM)); + addPass(createHexagonSplitConst32AndConst64()); } void HexagonPassConfig::addPreEmitPass() { - const HexagonTargetMachine &TM = getHexagonTargetMachine(); bool NoOpt = (getOptLevel() == CodeGenOpt::None); if (!NoOpt) addPass(createHexagonNewValueJump(), false); // Expand Spill code for predicate registers. - addPass(createHexagonExpandPredSpillCode(TM), false); - - // Split up TFRcondsets into conditional transfers. - addPass(createHexagonSplitTFRCondSets(TM), false); + addPass(createHexagonExpandPredSpillCode(), false); // Create Packets. if (!NoOpt) {