aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2008-02-19 03:15:29 +0000
committerOwen Anderson <resistor@mac.com>2008-02-19 03:15:29 +0000
commitc0755a6f984f17c269c2a7a4b48c74d201403c9b (patch)
tree025a5005c64fc49f75235f77d6d14bbfec0ffbd7
parent7ad3920e31a7f47e19a1f66a173b3c2e0eb80e8b (diff)
An sret parameter is required to be the first parameter, so there's no need to loop
over all the parameters of the callee looking for it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47309 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Transforms/Scalar/GVN.cpp11
1 files changed, 3 insertions, 8 deletions
diff --git a/lib/Transforms/Scalar/GVN.cpp b/lib/Transforms/Scalar/GVN.cpp
index f34ae69779..4de0f3dc72 100644
--- a/lib/Transforms/Scalar/GVN.cpp
+++ b/lib/Transforms/Scalar/GVN.cpp
@@ -1089,15 +1089,10 @@ bool GVN::performReturnSlotOptzn(MemCpyInst* cpy, CallInst* C,
// If all checks passed, then we can perform the transformation
CallSite CS = CallSite::get(C);
- for (unsigned i = 0; i < CS.arg_size(); ++i) {
- if (CS.paramHasAttr(i+1, ParamAttr::StructRet)) {
- if (CS.getArgument(i)->getType() != cpyDest->getType())
- return false;
+ if (CS.getArgument(0)->getType() != cpyDest->getType())
+ return false;
- CS.setArgument(i, cpyDest);
- break;
- }
- }
+ CS.setArgument(0, cpyDest);
MemoryDependenceAnalysis& MD = getAnalysis<MemoryDependenceAnalysis>();
MD.dropInstruction(C);