Let StructRetPromotion check if it's users are really calling it and not

passing its pointer. Fixes test with added testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51991 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Matthijs Kooijman
2008-06-05 08:48:32 +00:00
parent 41335411a8
commit 257da0a7fc
2 changed files with 28 additions and 0 deletions

View File

@@ -158,6 +158,10 @@ bool SRETPromotion::isSafeToUpdateAllCallers(Function *F) {
for (Value::use_iterator FnUseI = F->use_begin(), FnUseE = F->use_end();
FnUseI != FnUseE; ++FnUseI) {
// The function is passed in as an argument to (possibly) another function,
// we can't change it!
if (FnUseI.getOperandNo() != 0)
return false;
CallSite CS = CallSite::get(*FnUseI);
Instruction *Call = CS.getInstruction();