From e8f9a004244b214c4a33f1370b3aaa8a9b1a6c05 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 20 Aug 2008 01:17:01 +0000 Subject: Fix FastISel to recognize that the last block in the function does not have a fall-through successor. llvm-svn: 55033 --- llvm/lib/CodeGen/SelectionDAG/FastISel.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'llvm/lib/CodeGen/SelectionDAG/FastISel.cpp') diff --git a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp index e56747a89c1..cd6e2a2a313 100644 --- a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp +++ b/llvm/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. -- cgit v1.2.3