Be consistent with other attribute methods, and

check the callee also if it is known.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46206 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan Sands 2008-01-21 11:27:55 +00:00
parent da9bb3578e
commit 53d4afcee9

View File

@ -406,7 +406,13 @@ bool CallInst::isStructReturn() const {
/// @brief Determine if any call argument is an aggregate passed by value.
bool CallInst::hasByValArgument() const {
return ParamAttrs && ParamAttrs->hasAttrSomewhere(ParamAttr::ByVal);
if (ParamAttrs && ParamAttrs->hasAttrSomewhere(ParamAttr::ByVal))
return true;
// Be consistent with other methods and check the callee too.
if (const Function *F = getCalledFunction())
if (const ParamAttrsList *PAL = F->getParamAttrs())
return PAL->hasAttrSomewhere(ParamAttr::ByVal);
return false;
}
void CallInst::setDoesNotThrow(bool doesNotThrow) {