Really fix the fall-through logic.

Add a triple to the tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132885 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2011-06-12 05:57:01 +00:00
parent c1e903ceb3
commit 1edc08b09f
3 changed files with 26 additions and 1 deletions

View File

@ -1941,6 +1941,9 @@ isBlockOnlyReachableByFallthrough(const MachineBasicBlock *MBB) const {
if (TII->AnalyzeBranch(*Pred, PredTBB, PredFBB, PredCond))
return false;
if (PredTBB == MBB || PredFBB == MBB)
return false;
// This is a fall through if there is no conditions in the bb
// or if there is no explicit false branch.
return PredCond.empty() || !PredFBB;

View File

@ -1,4 +1,4 @@
; RUN: llc -O0 < %s | FileCheck %s
; RUN: llc -mtriple=x86_64-apple-darwin10 -O0 < %s | FileCheck %s
; test that we print a label that we use. We had a bug where
; we would print the jump, but not the label because it was considered

View File

@ -0,0 +1,22 @@
; RUN: llc -mtriple=x86_64-apple-darwin10 -O0 < %s | FileCheck %s
; test that we print a label that we use. We had a bug where
; we would print the jump, but not the label because it was considered
; a fall through.
; CHECK: jmp LBB0_1
; CHECK: LBB0_1:
define void @foobar() {
entry:
invoke void @_zed()
to label %invoke.cont unwind label %lpad
invoke.cont: ; preds = %entry
ret void
lpad: ; preds = %entry
unreachable
}
declare void @_zed() ssp align 2