summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/SimplifyCFG/2009-01-19-UnconditionalTrappingConstantExpr.ll
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-01-19 23:03:13 +0000
committerChris Lattner <sabre@nondot.org>2009-01-19 23:03:13 +0000
commitea9f1d3c47a5fa42bee7207e8c588f61bb31b183 (patch)
tree07ff839efb5643162e94b2d98757c07b11070e79 /llvm/test/Transforms/SimplifyCFG/2009-01-19-UnconditionalTrappingConstantExpr.ll
parentd21d7226b1db00fa1a20e1d8a1127dce2aa538ec (diff)
downloadbcm5719-llvm-ea9f1d3c47a5fa42bee7207e8c588f61bb31b183.tar.gz
bcm5719-llvm-ea9f1d3c47a5fa42bee7207e8c588f61bb31b183.zip
Fix a problem exposed by PR3354: simplifycfg was making a potentially
trapping instruction be executed unconditionally. llvm-svn: 62541
Diffstat (limited to 'llvm/test/Transforms/SimplifyCFG/2009-01-19-UnconditionalTrappingConstantExpr.ll')
-rw-r--r--llvm/test/Transforms/SimplifyCFG/2009-01-19-UnconditionalTrappingConstantExpr.ll20
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/test/Transforms/SimplifyCFG/2009-01-19-UnconditionalTrappingConstantExpr.ll b/llvm/test/Transforms/SimplifyCFG/2009-01-19-UnconditionalTrappingConstantExpr.ll
new file mode 100644
index 00000000000..0bc6bdb895b
--- /dev/null
+++ b/llvm/test/Transforms/SimplifyCFG/2009-01-19-UnconditionalTrappingConstantExpr.ll
@@ -0,0 +1,20 @@
+; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | grep {br i1 } | count 2
+; PR3354
+; Do not merge bb1 into the entry block, it might trap.
+
+@G = extern_weak global i32
+
+define i32 @test(i32 %tmp21, i32 %tmp24) {
+ %tmp25 = icmp sle i32 %tmp21, %tmp24
+ br i1 %tmp25, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %tmp26 = icmp sgt i32 sdiv (i32 -32768, i32 ptrtoint (i32* @G to i32)), 0
+ br i1 %tmp26, label %bb6, label %bb2
+bb2:
+ ret i32 42
+
+bb6:
+ unwind
+}
+
OpenPOWER on IntegriCloud