From e6798b757acb3a2077c2498e9913fff2f5e4325c Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 20 Aug 2008 01:17:01 +0000 Subject: [PATCH] Fix FastISel to recognize that the last block in the function does 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 | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/CodeGen/SelectionDAG/FastISel.cpp b/lib/CodeGen/SelectionDAG/FastISel.cpp index e56747a89c1..cd6e2a2a313 100644 --- a/lib/CodeGen/SelectionDAG/FastISel.cpp +++ b/lib/CodeGen/SelectionDAG/FastISel.cpp @@ -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. -- 2.34.1