Fixup for recent -fast-isel-abort change: code didn't match description
authorMehdi Amini <mehdi.amini@apple.com>
Sat, 28 Feb 2015 19:34:54 +0000 (19:34 +0000)
committerMehdi Amini <mehdi.amini@apple.com>
Sat, 28 Feb 2015 19:34:54 +0000 (19:34 +0000)
Level 1 should abort for all instructions but call/terminators/args.
Instead it was aborting only if the level was > 2

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230861 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

index 3506de08f61b8780ad8335dca3668f91610aba05..d015b0b0dd062f8b18ff1aee86aa40b44a1d3447 100644 (file)
@@ -1282,16 +1282,19 @@ void SelectionDAGISel::SelectAllBasicBlocks(const Function &Fn) {
           continue;
         }
 
+        bool ShouldAbort = EnableFastISelAbort;
         if (EnableFastISelVerbose || EnableFastISelAbort) {
           if (isa<TerminatorInst>(Inst)) {
             // Use a different message for terminator misses.
             dbgs() << "FastISel missed terminator: ";
+            // Don't abort unless for terminator unless the level is really high
+            ShouldAbort = (EnableFastISelAbort > 2);
           } else {
             dbgs() << "FastISel miss: ";
           }
           Inst->dump();
         }
-        if (EnableFastISelAbort > 2)
+        if (ShouldAbort)
           // FastISel selector couldn't handle something and bailed.
           // For the purpose of debugging, just abort.
           llvm_unreachable("FastISel didn't select the entire block");