summaryrefslogtreecommitdiff
path: root/test/Transforms/LoopStrengthReduce
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2012-02-27 02:13:03 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2012-02-27 02:13:03 +0000
commit23b6ec906a081259dad4672ec386ddfb52cd0d9f (patch)
tree3d096d26405e54dbce0d50439a3bf008fefa56f0 /test/Transforms/LoopStrengthReduce
parent930a1ebd929aa0ab4c2610e7f7a721c18dcfe052 (diff)
downloadllvm-23b6ec906a081259dad4672ec386ddfb52cd0d9f.tar.gz
llvm-23b6ec906a081259dad4672ec386ddfb52cd0d9f.tar.bz2
llvm-23b6ec906a081259dad4672ec386ddfb52cd0d9f.tar.xz
Fix this assert. IP can point to an instruction with strange dominance
properties (invoke). Just assert that the instruction we return dominates the insertion point. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151511 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/LoopStrengthReduce')
-rw-r--r--test/Transforms/LoopStrengthReduce/dominate-assert.ll30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/Transforms/LoopStrengthReduce/dominate-assert.ll b/test/Transforms/LoopStrengthReduce/dominate-assert.ll
index 89f2f60334..b87bf620de 100644
--- a/test/Transforms/LoopStrengthReduce/dominate-assert.ll
+++ b/test/Transforms/LoopStrengthReduce/dominate-assert.ll
@@ -38,3 +38,33 @@ bb8:
bb9:
resume { i8*, i32 } zeroinitializer
}
+
+
+define void @h() {
+bb1:
+ invoke void @g() optsize
+ to label %bb2 unwind label %bb5
+bb2:
+ %arrayctor.cur = phi i8* [ undef, %bb1 ], [ %arrayctor.next, %bb3 ]
+ invoke void @g() optsize
+ to label %bb3 unwind label %bb6
+bb3:
+ %arrayctor.next = getelementptr inbounds i8* %arrayctor.cur, i64 1
+ br label %bb2
+bb4:
+ ret void
+bb5:
+ %tmp = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
+ cleanup
+ invoke void @g() optsize
+ to label %bb4 unwind label %bb7
+bb6:
+ %tmp1 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
+ cleanup
+ %arraydestroy.isempty = icmp eq i8* undef, %arrayctor.cur
+ ret void
+bb7:
+ %lpad.nonloopexit = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
+ catch i8* null
+ ret void
+}