mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-14 23:48:49 +00:00
[FunctionAttrs] Remove a loop, NFC refactor
Summary: Remove the loop over the uses of the CallSite in ArgumentUsesTracker. Since we have the `Use *` for actual argument operand, we can just use pointer subtraction. The time complexity remains the same though (except for a vararg argument) -- `std::advance` is O(UseIndex) for the ArgumentList iterator. The real motivation is to make a later change adding support for operand bundles simpler. Reviewers: reames, chandlerc, nlewycky Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D14363 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252141 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
76b6b15dcd
commit
8e56fac5c1
@ -321,23 +321,21 @@ struct ArgumentUsesTracker : public CaptureTracker {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Found = false;
|
||||
Function::arg_iterator AI = F->arg_begin(), AE = F->arg_end();
|
||||
for (CallSite::arg_iterator PI = CS.arg_begin(), PE = CS.arg_end();
|
||||
PI != PE; ++PI, ++AI) {
|
||||
if (AI == AE) {
|
||||
assert(F->isVarArg() && "More params than args in non-varargs call");
|
||||
Captured = true;
|
||||
return true;
|
||||
}
|
||||
if (PI == U) {
|
||||
Uses.push_back(&*AI);
|
||||
Found = true;
|
||||
break;
|
||||
}
|
||||
// Note: the callee and the two successor blocks *follow* the argument
|
||||
// operands. This means there is no need to adjust UseIndex to account for
|
||||
// these.
|
||||
|
||||
unsigned UseIndex =
|
||||
std::distance(const_cast<const Use *>(CS.arg_begin()), U);
|
||||
|
||||
assert(UseIndex < CS.arg_size() && "Non-argument use?");
|
||||
if (UseIndex >= F->arg_size()) {
|
||||
assert(F->isVarArg() && "More params than args in non-varargs call");
|
||||
Captured = true;
|
||||
return true;
|
||||
}
|
||||
assert(Found && "Capturing call-site captured nothing?");
|
||||
(void)Found;
|
||||
|
||||
Uses.push_back(std::next(F->arg_begin(), UseIndex));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user