summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/LoopStrengthReduce
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2012-02-26 02:19:19 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2012-02-26 02:19:19 +0000
commit94df267db334dc61ca294338cb4e6055f277b3f5 (patch)
tree5c2419098a4aedd63b544ade9eee136e6e7d2ffb /llvm/test/Transforms/LoopStrengthReduce
parentbfa7579801274d9cd4312ef62d26c0b1cef5e8bb (diff)
downloadbcm5719-llvm-94df267db334dc61ca294338cb4e6055f277b3f5.tar.gz
bcm5719-llvm-94df267db334dc61ca294338cb4e6055f277b3f5.zip
Change the implementation of dominates(inst, inst) to one based on what the
verifier does. This correctly handles invoke. Thanks to Duncan, Andrew and Chris for the comments. Thanks to Joerg for the early testing. llvm-svn: 151469
Diffstat (limited to 'llvm/test/Transforms/LoopStrengthReduce')
-rw-r--r--llvm/test/Transforms/LoopStrengthReduce/dominate-assert.ll40
1 files changed, 40 insertions, 0 deletions
diff --git a/llvm/test/Transforms/LoopStrengthReduce/dominate-assert.ll b/llvm/test/Transforms/LoopStrengthReduce/dominate-assert.ll
new file mode 100644
index 00000000000..89f2f603349
--- /dev/null
+++ b/llvm/test/Transforms/LoopStrengthReduce/dominate-assert.ll
@@ -0,0 +1,40 @@
+; RUN: opt -loop-reduce %s
+; we used to crash on this one
+
+declare i8* @_Znwm()
+declare i32 @__gxx_personality_v0(...)
+declare void @g()
+define void @f() {
+bb0:
+ br label %bb1
+bb1:
+ %v0 = phi i64 [ 0, %bb0 ], [ %v1, %bb1 ]
+ %v1 = add nsw i64 %v0, 1
+ br i1 undef, label %bb2, label %bb1
+bb2:
+ %v2 = icmp eq i64 %v0, 0
+ br i1 %v2, label %bb6, label %bb3
+bb3:
+ %v3 = invoke noalias i8* @_Znwm()
+ to label %bb5 unwind label %bb4
+bb4:
+ %v4 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
+ cleanup
+ br label %bb9
+bb5:
+ %v5 = bitcast i8* %v3 to i32**
+ %add.ptr.i = getelementptr inbounds i32** %v5, i64 %v0
+ br label %bb6
+bb6:
+ %v6 = phi i32** [ null, %bb2 ], [ %add.ptr.i, %bb5 ]
+ invoke void @g()
+ to label %bb7 unwind label %bb8
+bb7:
+ unreachable
+bb8:
+ %v7 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
+ cleanup
+ br label %bb9
+bb9:
+ resume { i8*, i32 } zeroinitializer
+}
OpenPOWER on IntegriCloud