[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