mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-09 01:38:03 +00:00
Add functions for adding and testing string attributes to CallInst. NFC.
This change is needed later when I make changes to attach string function attributes to llvm.trap and llvm.debugtrap. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241304 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
44bc052f4d
commit
7ef8957773
@ -22,6 +22,7 @@
|
||||
#include "llvm/IR/Attributes.h"
|
||||
#include "llvm/IR/CallingConv.h"
|
||||
#include "llvm/IR/DerivedTypes.h"
|
||||
#include "llvm/IR/Function.h"
|
||||
#include "llvm/IR/InstrTypes.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include <iterator>
|
||||
@ -1508,6 +1509,9 @@ public:
|
||||
/// addAttribute - adds the attribute to the list of attributes.
|
||||
void addAttribute(unsigned i, Attribute::AttrKind attr);
|
||||
|
||||
/// addAttribute - adds the attribute to the list of attributes.
|
||||
void addAttribute(unsigned i, StringRef Kind, StringRef Value);
|
||||
|
||||
/// removeAttribute - removes the attribute from the list of attributes.
|
||||
void removeAttribute(unsigned i, Attribute attr);
|
||||
|
||||
@ -1525,6 +1529,11 @@ public:
|
||||
return hasFnAttrImpl(A);
|
||||
}
|
||||
|
||||
/// \brief Determine whether this call has the given attribute.
|
||||
bool hasFnAttr(StringRef A) const {
|
||||
return hasFnAttrImpl(A);
|
||||
}
|
||||
|
||||
/// \brief Determine whether the call or the callee has the given attributes.
|
||||
bool paramHasAttr(unsigned i, Attribute::AttrKind A) const;
|
||||
|
||||
@ -1651,7 +1660,14 @@ public:
|
||||
}
|
||||
private:
|
||||
|
||||
bool hasFnAttrImpl(Attribute::AttrKind A) const;
|
||||
template<typename AttrKind>
|
||||
bool hasFnAttrImpl(AttrKind A) const {
|
||||
if (AttributeList.hasAttribute(AttributeSet::FunctionIndex, A))
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getAttributes().hasAttribute(AttributeSet::FunctionIndex, A);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Shadow Instruction::setInstructionSubclassData with a private forwarding
|
||||
// method so that subclasses cannot accidentally use it.
|
||||
|
@ -292,6 +292,12 @@ void CallInst::addAttribute(unsigned i, Attribute::AttrKind attr) {
|
||||
setAttributes(PAL);
|
||||
}
|
||||
|
||||
void CallInst::addAttribute(unsigned i, StringRef Kind, StringRef Value) {
|
||||
AttributeSet PAL = getAttributes();
|
||||
PAL = PAL.addAttribute(getContext(), i, Kind, Value);
|
||||
setAttributes(PAL);
|
||||
}
|
||||
|
||||
void CallInst::removeAttribute(unsigned i, Attribute attr) {
|
||||
AttributeSet PAL = getAttributes();
|
||||
AttrBuilder B(attr);
|
||||
@ -313,14 +319,6 @@ void CallInst::addDereferenceableOrNullAttr(unsigned i, uint64_t Bytes) {
|
||||
setAttributes(PAL);
|
||||
}
|
||||
|
||||
bool CallInst::hasFnAttrImpl(Attribute::AttrKind A) const {
|
||||
if (AttributeList.hasAttribute(AttributeSet::FunctionIndex, A))
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getAttributes().hasAttribute(AttributeSet::FunctionIndex, A);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CallInst::paramHasAttr(unsigned i, Attribute::AttrKind A) const {
|
||||
if (AttributeList.hasAttribute(i, A))
|
||||
return true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user