diff options
author | Shuxin Yang <shuxin.llvm@gmail.com> | 2013-09-20 23:12:57 +0000 |
---|---|---|
committer | Shuxin Yang <shuxin.llvm@gmail.com> | 2013-09-20 23:12:57 +0000 |
commit | d93e8a06b2ca09ab18f390cd514b7443e2e571f7 (patch) | |
tree | 6126b1cad8f4f9182c944c0d697bb264c0348136 /test/Transforms/GVN/2007-07-26-InterlockingLoops.ll | |
parent | 4a20092e638935be11e87d33f7e5b35140162bd2 (diff) | |
download | external_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.ll | 8 |
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 |