diff options
author | Duncan Sands <baldrick@free.fr> | 2008-07-08 08:38:44 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2008-07-08 08:38:44 +0000 |
commit | dd8cc241e07fcbb3774733acb328eafe29b18b8a (patch) | |
tree | 21fd5db15f87a4c408f389ce5db38ce4921719fb /lib/VMCore/Instructions.cpp | |
parent | 3de4bbcc2640d22bc09e73faa40523ac060ea850 (diff) | |
download | external_llvm-dd8cc241e07fcbb3774733acb328eafe29b18b8a.zip external_llvm-dd8cc241e07fcbb3774733acb328eafe29b18b8a.tar.gz external_llvm-dd8cc241e07fcbb3774733acb328eafe29b18b8a.tar.bz2 |
Add some convenience methods for manipulating
call attributes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53223 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/Instructions.cpp')
-rw-r--r-- | lib/VMCore/Instructions.cpp | 46 |
1 files changed, 32 insertions, 14 deletions
diff --git a/lib/VMCore/Instructions.cpp b/lib/VMCore/Instructions.cpp index 4bcd560..36c3de7 100644 --- a/lib/VMCore/Instructions.cpp +++ b/lib/VMCore/Instructions.cpp @@ -72,12 +72,36 @@ bool CallSite::doesNotAccessMemory() const { else return cast<InvokeInst>(I)->doesNotAccessMemory(); } +void CallSite::setDoesNotAccessMemory(bool doesNotAccessMemory) { + if (CallInst *CI = dyn_cast<CallInst>(I)) + CI->setDoesNotAccessMemory(doesNotAccessMemory); + else + cast<InvokeInst>(I)->setDoesNotAccessMemory(doesNotAccessMemory); +} bool CallSite::onlyReadsMemory() const { if (CallInst *CI = dyn_cast<CallInst>(I)) return CI->onlyReadsMemory(); else return cast<InvokeInst>(I)->onlyReadsMemory(); } +void CallSite::setOnlyReadsMemory(bool onlyReadsMemory) { + if (CallInst *CI = dyn_cast<CallInst>(I)) + CI->setOnlyReadsMemory(onlyReadsMemory); + else + cast<InvokeInst>(I)->setOnlyReadsMemory(onlyReadsMemory); +} +bool CallSite::doesNotReturn() const { + if (CallInst *CI = dyn_cast<CallInst>(I)) + return CI->doesNotReturn(); + else + return cast<InvokeInst>(I)->doesNotReturn(); +} +void CallSite::setDoesNotReturn(bool doesNotReturn) { + if (CallInst *CI = dyn_cast<CallInst>(I)) + CI->setDoesNotReturn(doesNotReturn); + else + cast<InvokeInst>(I)->setDoesNotReturn(doesNotReturn); +} bool CallSite::doesNotThrow() const { if (CallInst *CI = dyn_cast<CallInst>(I)) return CI->doesNotThrow(); @@ -384,6 +408,12 @@ void CallInst::addParamAttr(unsigned i, ParameterAttributes attr) { setParamAttrs(PAL); } +void CallInst::removeParamAttr(unsigned i, ParameterAttributes attr) { + PAListPtr PAL = getParamAttrs(); + PAL = PAL.removeAttr(i, attr); + setParamAttrs(PAL); +} + bool CallInst::paramHasAttr(unsigned i, ParameterAttributes attr) const { if (ParamAttrs.paramHasAttr(i, attr)) return true; @@ -392,15 +422,6 @@ bool CallInst::paramHasAttr(unsigned i, ParameterAttributes attr) const { return false; } -void CallInst::setDoesNotThrow(bool doesNotThrow) { - PAListPtr PAL = getParamAttrs(); - if (doesNotThrow) - PAL = PAL.addAttr(0, ParamAttr::NoUnwind); - else - PAL = PAL.removeAttr(0, ParamAttr::NoUnwind); - setParamAttrs(PAL); -} - //===----------------------------------------------------------------------===// // InvokeInst Implementation @@ -466,12 +487,9 @@ void InvokeInst::addParamAttr(unsigned i, ParameterAttributes attr) { setParamAttrs(PAL); } -void InvokeInst::setDoesNotThrow(bool doesNotThrow) { +void InvokeInst::removeParamAttr(unsigned i, ParameterAttributes attr) { PAListPtr PAL = getParamAttrs(); - if (doesNotThrow) - PAL = PAL.addAttr(0, ParamAttr::NoUnwind); - else - PAL = PAL.removeAttr(0, ParamAttr::NoUnwind); + PAL = PAL.removeAttr(i, attr); setParamAttrs(PAL); } |