getArgOperandNo helper function.
Summary: A helper function to get argument number of a arg operand Use. Reviewers: jdoerfert, uenoku Subscribers: hiraditya, lebedev.ri, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D66844
This commit is contained in:
parent
8e9e433a2a
commit
c250ebf7bc
|
@ -1272,6 +1272,19 @@ public:
|
||||||
return isArgOperand(&UI.getUse());
|
return isArgOperand(&UI.getUse());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Given a use for a arg operand, get the arg operand number that
|
||||||
|
/// corresponds to it.
|
||||||
|
unsigned getArgOperandNo(const Use *U) const {
|
||||||
|
assert(isArgOperand(U) && "Arg operand # out of range!");
|
||||||
|
return U - arg_begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Given a value use iterator, return the arg operand number corresponding to
|
||||||
|
/// it. Iterator must actually correspond to a data operand.
|
||||||
|
unsigned getArgOperandNo(Value::const_user_iterator UI) const {
|
||||||
|
return getArgOperandNo(&UI.getUse());
|
||||||
|
}
|
||||||
|
|
||||||
/// Returns true if this CallSite passes the given Value* as an argument to
|
/// Returns true if this CallSite passes the given Value* as an argument to
|
||||||
/// the called function.
|
/// the called function.
|
||||||
bool hasArgument(const Value *V) const {
|
bool hasArgument(const Value *V) const {
|
||||||
|
|
|
@ -1572,7 +1572,7 @@ struct AANoFreeFloating : AANoFreeImpl {
|
||||||
if (!CB->isArgOperand(U))
|
if (!CB->isArgOperand(U))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
unsigned ArgNo = U - CB->arg_begin();
|
unsigned ArgNo = CB->getArgOperandNo(U);
|
||||||
|
|
||||||
const auto &NoFreeArg = A.getAAFor<AANoFree>(
|
const auto &NoFreeArg = A.getAAFor<AANoFree>(
|
||||||
*this, IRPosition::callsite_argument(*CB, ArgNo));
|
*this, IRPosition::callsite_argument(*CB, ArgNo));
|
||||||
|
@ -4144,7 +4144,7 @@ ChangeStatus AAHeapToStackImpl::updateImpl(Attributor &A) {
|
||||||
const auto &NoFreeAA =
|
const auto &NoFreeAA =
|
||||||
A.getAAFor<AANoFree>(*this, IRPosition::callsite_function(*CB));
|
A.getAAFor<AANoFree>(*this, IRPosition::callsite_function(*CB));
|
||||||
|
|
||||||
unsigned ArgNo = U - CB->arg_begin();
|
unsigned ArgNo = CB->getArgOperandNo(U);
|
||||||
const auto &NoCaptureAA = A.getAAFor<AANoCapture>(
|
const auto &NoCaptureAA = A.getAAFor<AANoCapture>(
|
||||||
*this, IRPosition::callsite_argument(*CB, ArgNo));
|
*this, IRPosition::callsite_argument(*CB, ArgNo));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue