diff options
author | NAKAMURA Takumi <geek4civic@gmail.com> | 2013-11-21 10:55:15 +0000 |
---|---|---|
committer | NAKAMURA Takumi <geek4civic@gmail.com> | 2013-11-21 10:55:15 +0000 |
commit | 43aa9396258f5ee148aad9d36e07840b902ab6a4 (patch) | |
tree | c1bfc75cafef3fc1d1354a2165f14212b4f2c292 /llvm/lib/CodeGen/SelectionDAG | |
parent | 2846e9ef1529debcffcb7b10a5c289f00cd35c9f (diff) | |
download | bcm5719-llvm-43aa9396258f5ee148aad9d36e07840b902ab6a4.tar.gz bcm5719-llvm-43aa9396258f5ee148aad9d36e07840b902ab6a4.zip |
Revert r195317 (and r195333), "Teach ISel not to optimize 'optnone' functions."
It broke, at least, i686 target. It is reproducible with "llc -mtriple=i686-unknown".
FYI, it didn't appear to add either "-O0" or "-fast-isel".
llvm-svn: 195339
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 41 |
1 files changed, 1 insertions, 40 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index faca3ee823c..91cb125dc89 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -223,39 +223,6 @@ defaultListDAGScheduler("default", "Best scheduler for the target", namespace llvm { //===--------------------------------------------------------------------===// - /// \brief This struct is used by SelectionDAGISel to temporarily override - /// the optimization level on a per-function basis. - class OptLevelChanger { - SelectionDAGISel &IS; - CodeGenOpt::Level SavedOptLevel; - - public: - OptLevelChanger(SelectionDAGISel &ISel, - CodeGenOpt::Level NewOptLevel) : IS(ISel) { - SavedOptLevel = IS.OptLevel; - if (NewOptLevel == SavedOptLevel) - return; - IS.OptLevel = NewOptLevel; - IS.TM.setOptLevel(NewOptLevel); - DEBUG(dbgs() << "\nChanging optimization level for Function " - << IS.MF->getFunction()->getName() << "\n"); - DEBUG(dbgs() << "\tBefore: -O" << SavedOptLevel - << " ; After: -O" << NewOptLevel << "\n"); - } - - ~OptLevelChanger() { - if (IS.OptLevel == SavedOptLevel) - return; - DEBUG(dbgs() << "\nRestoring optimization level for Function " - << IS.MF->getFunction()->getName() << "\n"); - DEBUG(dbgs() << "\tBefore: -O" << IS.OptLevel - << " ; After: -O" << SavedOptLevel << "\n"); - IS.OptLevel = SavedOptLevel; - IS.TM.setOptLevel(SavedOptLevel); - } - }; - - //===--------------------------------------------------------------------===// /// createDefaultScheduler - This creates an instruction scheduler appropriate /// for the target. ScheduleDAGSDNodes* createDefaultScheduler(SelectionDAGISel *IS, @@ -403,12 +370,6 @@ bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) { ST.resetSubtargetFeatures(MF); TM.resetTargetOptions(MF); - // Reset OptLevel to None for optnone functions. - CodeGenOpt::Level NewOptLevel = OptLevel; - if (Fn.hasFnAttribute(Attribute::OptimizeNone)) - NewOptLevel = CodeGenOpt::None; - OptLevelChanger OLC(*this, NewOptLevel); - DEBUG(dbgs() << "\n\n\n=== " << Fn.getName() << "\n"); SplitCriticalSideEffectEdges(const_cast<Function&>(Fn), this); @@ -987,7 +948,7 @@ static void collectFailStats(const Instruction *I) { void SelectionDAGISel::SelectAllBasicBlocks(const Function &Fn) { // Initialize the Fast-ISel state, if needed. FastISel *FastIS = 0; - if (TM.Options.EnableFastISel || Fn.hasFnAttribute(Attribute::OptimizeNone)) + if (TM.Options.EnableFastISel) FastIS = getTargetLowering()->createFastISel(*FuncInfo, LibInfo); // Iterate over all basic blocks in the function. |