Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.45 -> 1.46 --- Log message: Fix PR1228: http://llvm.org/PR1228 and CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll --- Diffs of the changes: (+8 -2) BranchFolding.cpp | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) Index: llvm/lib/CodeGen/BranchFolding.cpp diff -u llvm/lib/CodeGen/BranchFolding.cpp:1.45 llvm/lib/CodeGen/BranchFolding.cpp:1.46 --- llvm/lib/CodeGen/BranchFolding.cpp:1.45 Tue Mar 20 16:35:06 2007 +++ llvm/lib/CodeGen/BranchFolding.cpp Mon Apr 30 18:35:00 2007 @@ -877,7 +877,7 @@ // Now we know that there was no fall-through into this block, check to // see if it has a fall-through into its successor. bool CurFallsThru = CanFallThrough(MBB, CurUnAnalyzable, CurTBB, CurFBB, - CurCond); + CurCond); if (!MBB->isLandingPad()) { // Check all the predecessors of this block. If one of them has no fall @@ -914,7 +914,13 @@ MachineBasicBlock *SuccBB = *SI; MachineFunction::iterator SuccPrev = SuccBB; --SuccPrev; std::vector<MachineOperand> SuccPrevCond; - if (SuccBB != MBB && !CanFallThrough(SuccPrev)) { + + // If this block doesn't already fall-through to that successor, and if + // the succ doesn't already have a block that can fall through into it, + // and if the successor isn't an EH destination, we can arrange for the + // fallthrough to happen. + if (SuccBB != MBB && !CanFallThrough(SuccPrev) && + !SuccBB->isLandingPad()) { MBB->moveBefore(SuccBB); MadeChange = true; return OptimizeBlock(MBB); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits