Fix FastISel to recognize that the last block in the function does
authorDan Gohman <gohman@apple.com>
Wed, 20 Aug 2008 01:17:01 +0000 (01:17 +0000)
committerDan Gohman <gohman@apple.com>
Wed, 20 Aug 2008 01:17:01 +0000 (01:17 +0000)
not have a fall-through successor.

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

lib/CodeGen/SelectionDAG/FastISel.cpp

index e56747a89c12e2f041382bafbacef2cd56800d8f..cd6e2a2a313e4fadb2cdc356764f9d266ad528fd 100644 (file)
@@ -104,11 +104,14 @@ FastISel::SelectInstructions(BasicBlock::iterator Begin, BasicBlock::iterator En
 
       // For now, check for and handle just the most trivial case: an
       // unconditional fall-through branch.
-      if (BI->isUnconditional() &&
-          next(MachineFunction::iterator(MBB))->getBasicBlock() ==
-            BI->getSuccessor(0)) {
-        MBB->addSuccessor(next(MachineFunction::iterator(MBB)));
-        break;
+      if (BI->isUnconditional()) {
+         MachineFunction::iterator NextMBB =
+           next(MachineFunction::iterator(MBB));
+         if (NextMBB != MF->end() &&
+             NextMBB->getBasicBlock() == BI->getSuccessor(0)) {
+          MBB->addSuccessor(NextMBB);
+          break;
+        }
       }
 
       // Something more complicated. Halt "fast" selection and bail.