aboutsummaryrefslogtreecommitdiffstats
path: root/test/Transforms/GVN/2007-07-26-InterlockingLoops.ll
diff options
context:
space:
mode:
authorShuxin Yang <shuxin.llvm@gmail.com>2013-09-20 23:12:57 +0000
committerShuxin Yang <shuxin.llvm@gmail.com>2013-09-20 23:12:57 +0000
commitd93e8a06b2ca09ab18f390cd514b7443e2e571f7 (patch)
tree6126b1cad8f4f9182c944c0d697bb264c0348136 /test/Transforms/GVN/2007-07-26-InterlockingLoops.ll
parent4a20092e638935be11e87d33f7e5b35140162bd2 (diff)
downloadexternal_llvm-d93e8a06b2ca09ab18f390cd514b7443e2e571f7.zip
external_llvm-d93e8a06b2ca09ab18f390cd514b7443e2e571f7.tar.gz
external_llvm-d93e8a06b2ca09ab18f390cd514b7443e2e571f7.tar.bz2
Resurrect r191017 " GVN proceeds in the presence of dead code" plus a fix to PR17307 & 17308.
The problem of r191017 is that when GVN fabricate a val-number for a dead instruction (in order to make following expr-PRE happy), it forget to fabricate a leader-table entry for it as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191118 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/GVN/2007-07-26-InterlockingLoops.ll')
-rw-r--r--test/Transforms/GVN/2007-07-26-InterlockingLoops.ll8
1 files changed, 5 insertions, 3 deletions
diff --git a/test/Transforms/GVN/2007-07-26-InterlockingLoops.ll b/test/Transforms/GVN/2007-07-26-InterlockingLoops.ll
index a1cc008..5a15f0e 100644
--- a/test/Transforms/GVN/2007-07-26-InterlockingLoops.ll
+++ b/test/Transforms/GVN/2007-07-26-InterlockingLoops.ll
@@ -2,7 +2,7 @@
@last = external global [65 x i32*]
-define i32 @NextRootMove(i32 %wtm) {
+define i32 @NextRootMove(i32 %wtm, i32 %x, i32 %y, i32 %z) {
entry:
%A = alloca i32*
%tmp17618 = load i32** getelementptr ([65 x i32*]* @last, i32 0, i32 1), align 4
@@ -15,12 +15,14 @@ entry:
br label %cond_true116
cond_true116:
- br i1 false, label %cond_true128, label %cond_true145
+ %cmp = icmp eq i32 %x, %y
+ br i1 %cmp, label %cond_true128, label %cond_true145
cond_true128:
%tmp17625 = load i32** getelementptr ([65 x i32*]* @last, i32 0, i32 1), align 4
store i32* %tmp17625, i32** %A
- br i1 false, label %bb98.backedge, label %return.loopexit
+ %cmp1 = icmp eq i32 %x, %z
+ br i1 %cmp1 , label %bb98.backedge, label %return.loopexit
bb98.backedge:
br label %cond_true116