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

Nick Lewycky nicholas at mxc.ca
Mon Sep 24 18:55:59 PDT 2012


Author: nicholas
Date: Mon Sep 24 20:55:59 2012
New Revision: 164583

URL: http://llvm.org/viewvc/llvm-project?rev=164583&view=rev
Log:
Don't forget that strcpy and friends return a pointer to the destination, so
it's not a dead store if that pointer is used. Whoops!

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

Modified: llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp?rev=164583&r1=164582&r2=164583&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp Mon Sep 24 20:55:59 2012
@@ -266,8 +266,8 @@
     }
   }
 
-  if (CallSite(I))  // If we assume hasMemoryWrite(I) is true,
-    return true;    // then there's nothing left to check.
+  if (CallSite CS = I)
+    return CS.getInstruction()->use_empty();
 
   return false;
 }

Modified: llvm/trunk/test/Transforms/DeadStoreElimination/libcalls.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/DeadStoreElimination/libcalls.ll?rev=164583&r1=164582&r2=164583&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/DeadStoreElimination/libcalls.ll (original)
+++ llvm/trunk/test/Transforms/DeadStoreElimination/libcalls.ll Mon Sep 24 20:55:59 2012
@@ -44,3 +44,13 @@
   ret void
 }
 
+define void @test5(i8* nocapture %src) {
+; CHECK: @test5
+  %dest = alloca [100 x i8], align 16
+  %arraydecay = getelementptr inbounds [100 x i8]* %dest, i64 0, i64 0
+  %call = call i8* @strcpy(i8* %arraydecay, i8* %src)
+; CHECK: %call = call i8* @strcpy
+  %arrayidx = getelementptr inbounds i8* %call, i64 10
+  store i8 97, i8* %arrayidx, align 1
+  ret void
+}





More information about the llvm-commits mailing list