diff options
author | Duncan Sands <baldrick@free.fr> | 2007-11-28 17:07:01 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2007-11-28 17:07:01 +0000 |
commit | 637ec55233bf7a93bd9f605fb9d4a8fb7184eb14 (patch) | |
tree | bad8f7480a6ea8ab2cbce2ad3427e8173247f68e /lib/VMCore/Instructions.cpp | |
parent | bb5c86326f9a6f773edb4a36871f956415621ed4 (diff) | |
download | external_llvm-637ec55233bf7a93bd9f605fb9d4a8fb7184eb14.zip external_llvm-637ec55233bf7a93bd9f605fb9d4a8fb7184eb14.tar.gz external_llvm-637ec55233bf7a93bd9f605fb9d4a8fb7184eb14.tar.bz2 |
Add some convenience methods for querying attributes, and
use them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44403 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/Instructions.cpp')
-rw-r--r-- | lib/VMCore/Instructions.cpp | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/lib/VMCore/Instructions.cpp b/lib/VMCore/Instructions.cpp index 7226f66..8e48491 100644 --- a/lib/VMCore/Instructions.cpp +++ b/lib/VMCore/Instructions.cpp @@ -47,6 +47,12 @@ void CallSite::setParamAttrs(const ParamAttrsList *PAL) { else cast<InvokeInst>(I)->setParamAttrs(PAL); } +bool CallSite::paramHasAttr(uint16_t i, ParameterAttributes attr) const { + if (CallInst *CI = dyn_cast<CallInst>(I)) + return CI->paramHasAttr(i, attr); + else + return cast<InvokeInst>(I)->paramHasAttr(i, attr); +} @@ -376,12 +382,14 @@ void CallInst::setParamAttrs(const ParamAttrsList *newAttrs) { ParamAttrs = newAttrs; } -bool CallInst::isStructReturn() const { - if (ParamAttrs) - return ParamAttrs->paramHasAttr(1, ParamAttr::StructRet); - return false; +bool CallInst::paramHasAttr(uint16_t i, ParameterAttributes attr) const { + if (ParamAttrs && ParamAttrs->paramHasAttr(i, attr)) + return true; + const Function *F = getCalledFunction(); + return F && F->getParamAttrs() && F->getParamAttrs()->paramHasAttr(i, attr); } + //===----------------------------------------------------------------------===// // InvokeInst Implementation //===----------------------------------------------------------------------===// @@ -451,12 +459,14 @@ void InvokeInst::setParamAttrs(const ParamAttrsList *newAttrs) { ParamAttrs = newAttrs; } -bool InvokeInst::isStructReturn() const { - if (ParamAttrs) - return ParamAttrs->paramHasAttr(1, ParamAttr::StructRet); - return false; +bool InvokeInst::paramHasAttr(uint16_t i, ParameterAttributes attr) const { + if (ParamAttrs && ParamAttrs->paramHasAttr(i, attr)) + return true; + const Function *F = getCalledFunction(); + return F && F->getParamAttrs() && F->getParamAttrs()->paramHasAttr(i, attr); } + //===----------------------------------------------------------------------===// // ReturnInst Implementation //===----------------------------------------------------------------------===// |