diff options
| author | Chris Lattner <sabre@nondot.org> | 2009-01-19 23:03:13 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2009-01-19 23:03:13 +0000 |
| commit | ea9f1d3c47a5fa42bee7207e8c588f61bb31b183 (patch) | |
| tree | 07ff839efb5643162e94b2d98757c07b11070e79 /llvm/test/Transforms/SimplifyCFG/2009-01-19-UnconditionalTrappingConstantExpr.ll | |
| parent | d21d7226b1db00fa1a20e1d8a1127dce2aa538ec (diff) | |
| download | bcm5719-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.ll | 20 |
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 +} + |

