summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2011-06-12 05:57:01 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2011-06-12 05:57:01 +0000
commit2f3c2fe7c5aa34d5a62ed9e3715e609816e2486f (patch)
treeabd15de564d996e0c2cb04587e1015314c29df9e
parentcb55e752edca7116d79d348ce48cc931e0c515f2 (diff)
downloadbcm5719-llvm-2f3c2fe7c5aa34d5a62ed9e3715e609816e2486f.tar.gz
bcm5719-llvm-2f3c2fe7c5aa34d5a62ed9e3715e609816e2486f.zip
Really fix the fall-through logic.
Add a triple to the tests. llvm-svn: 132885
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp3
-rw-r--r--llvm/test/CodeGen/X86/asm-label.ll2
-rw-r--r--llvm/test/CodeGen/X86/asm-label2.ll22
3 files changed, 26 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 00f3501fcf7..f324148cea4 100644
--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -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;
diff --git a/llvm/test/CodeGen/X86/asm-label.ll b/llvm/test/CodeGen/X86/asm-label.ll
index 0c227b1b94d..1fc6e2eaf2b 100644
--- a/llvm/test/CodeGen/X86/asm-label.ll
+++ b/llvm/test/CodeGen/X86/asm-label.ll
@@ -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
diff --git a/llvm/test/CodeGen/X86/asm-label2.ll b/llvm/test/CodeGen/X86/asm-label2.ll
new file mode 100644
index 00000000000..0b5de3403f3
--- /dev/null
+++ b/llvm/test/CodeGen/X86/asm-label2.ll
@@ -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
OpenPOWER on IntegriCloud