1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00

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!

llvm-svn: 164583
This commit is contained in:
Nick Lewycky 2012-09-25 01:55:59 +00:00
parent 9900dd8c89
commit 7b751873f1
2 changed files with 12 additions and 2 deletions

View File

@ -266,8 +266,8 @@ static bool isRemovable(Instruction *I) {
}
}
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;
}

View File

@ -44,3 +44,13 @@ define void @test4(i8* %src) {
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
}