[llvm-commits] [llvm] r120325 - in /llvm/trunk: lib/Transforms/Scalar/DeadStoreElimination.cpp test/Transforms/DeadStoreElimination/simple.ll

Chris Lattner sabre at nondot.org
Mon Nov 29 13:59:31 PST 2010


Author: lattner
Date: Mon Nov 29 15:59:31 2010
New Revision: 120325

URL: http://llvm.org/viewvc/llvm-project?rev=120325&view=rev
Log:
fix PR8677, patch by Jakub Staszak!

Modified:
    llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp
    llvm/trunk/test/Transforms/DeadStoreElimination/simple.ll

Modified: llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp?rev=120325&r1=120324&r2=120325&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp Mon Nov 29 15:59:31 2010
@@ -235,8 +235,10 @@
                                                 &BB);
       }
         
-      // If not a definite must-alias dependency, ignore it.
-      if (!InstDep.isDef())
+      // If not a definite must-alias store dependency, ignore it.  If this is a
+      // load from the same pointer, we don't want to transform load+store into
+      // a noop.
+      if (!InstDep.isDef() || !isa<StoreInst>(InstDep.getInst()))
         continue;
     }
     

Modified: llvm/trunk/test/Transforms/DeadStoreElimination/simple.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/DeadStoreElimination/simple.ll?rev=120325&r1=120324&r2=120325&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/DeadStoreElimination/simple.ll (original)
+++ llvm/trunk/test/Transforms/DeadStoreElimination/simple.ll Mon Nov 29 15:59:31 2010
@@ -20,3 +20,17 @@
 ; CHECK: @test2
 ; CHECK-NEXT: store i32 20
 }
+
+
+; PR8677
+ at g = global i32 1
+
+define i32 @test3(i32* %g_addr) nounwind {
+; CHECK: @test3
+; CHEcK: load i32* %g_addr
+  %g_value = load i32* %g_addr, align 4
+  store i32 -1, i32* @g, align 4
+  store i32 %g_value, i32* %g_addr, align 4
+  %tmp3 = load i32* @g, align 4
+  ret i32 %tmp3
+}





More information about the llvm-commits mailing list