mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 19:31:58 +00:00
Remove more uses of the attribute enums by supplying appropriate query methods for them.
No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165466 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8831c0605b
commit
060f20a0fa
@ -1267,20 +1267,29 @@ public:
|
||||
/// removeAttribute - removes the attribute from the list of attributes.
|
||||
void removeAttribute(unsigned i, Attributes attr);
|
||||
|
||||
/// @brief Determine whether this call has the given attribute.
|
||||
bool fnHasNoAliasAttr() const;
|
||||
bool fnHasNoInlineAttr() const;
|
||||
bool fnHasNoReturnAttr() const;
|
||||
bool fnHasNoUnwindAttr() const;
|
||||
bool fnHasReadNoneAttr() const;
|
||||
bool fnHasReadOnlyAttr() const;
|
||||
bool fnHasReturnsTwiceAttr() const;
|
||||
|
||||
/// \brief Return true if this call has the given attribute.
|
||||
bool hasFnAttr(Attributes N) const {
|
||||
return paramHasAttr(~0, N);
|
||||
}
|
||||
|
||||
/// @brief Determine whether the call or the callee has the given attributes.
|
||||
bool paramHasSExtAttr(unsigned i) const;
|
||||
bool paramHasZExtAttr(unsigned i) const;
|
||||
bool paramHasInRegAttr(unsigned i) const;
|
||||
bool paramHasStructRetAttr(unsigned i) const;
|
||||
bool paramHasNestAttr(unsigned i) const;
|
||||
bool paramHasByValAttr(unsigned i) const;
|
||||
bool paramHasInRegAttr(unsigned i) const;
|
||||
bool paramHasNestAttr(unsigned i) const;
|
||||
bool paramHasNoAliasAttr(unsigned i) const;
|
||||
bool paramHasNoCaptureAttr(unsigned i) const;
|
||||
bool paramHasSExtAttr(unsigned i) const;
|
||||
bool paramHasStructRetAttr(unsigned i) const;
|
||||
bool paramHasZExtAttr(unsigned i) const;
|
||||
|
||||
/// @brief Determine whether the call or the callee has the given attribute.
|
||||
bool paramHasAttr(unsigned i, Attributes attr) const;
|
||||
@ -1291,7 +1300,7 @@ public:
|
||||
}
|
||||
|
||||
/// @brief Return true if the call should not be inlined.
|
||||
bool isNoInline() const { return hasFnAttr(Attribute::NoInline); }
|
||||
bool isNoInline() const { return fnHasNoInlineAttr(); }
|
||||
void setIsNoInline(bool Value = true) {
|
||||
if (Value) addAttribute(~0, Attribute::NoInline);
|
||||
else removeAttribute(~0, Attribute::NoInline);
|
||||
@ -1299,7 +1308,7 @@ public:
|
||||
|
||||
/// @brief Return true if the call can return twice
|
||||
bool canReturnTwice() const {
|
||||
return hasFnAttr(Attribute::ReturnsTwice);
|
||||
return fnHasReturnsTwiceAttr();
|
||||
}
|
||||
void setCanReturnTwice(bool Value = true) {
|
||||
if (Value) addAttribute(~0, Attribute::ReturnsTwice);
|
||||
@ -1308,7 +1317,7 @@ public:
|
||||
|
||||
/// @brief Determine if the call does not access memory.
|
||||
bool doesNotAccessMemory() const {
|
||||
return hasFnAttr(Attribute::ReadNone);
|
||||
return fnHasReadNoneAttr();
|
||||
}
|
||||
void setDoesNotAccessMemory(bool NotAccessMemory = true) {
|
||||
if (NotAccessMemory) addAttribute(~0, Attribute::ReadNone);
|
||||
@ -1317,7 +1326,7 @@ public:
|
||||
|
||||
/// @brief Determine if the call does not access or only reads memory.
|
||||
bool onlyReadsMemory() const {
|
||||
return doesNotAccessMemory() || hasFnAttr(Attribute::ReadOnly);
|
||||
return doesNotAccessMemory() || fnHasReadOnlyAttr();
|
||||
}
|
||||
void setOnlyReadsMemory(bool OnlyReadsMemory = true) {
|
||||
if (OnlyReadsMemory) addAttribute(~0, Attribute::ReadOnly);
|
||||
@ -1325,14 +1334,14 @@ public:
|
||||
}
|
||||
|
||||
/// @brief Determine if the call cannot return.
|
||||
bool doesNotReturn() const { return hasFnAttr(Attribute::NoReturn); }
|
||||
bool doesNotReturn() const { return fnHasNoReturnAttr(); }
|
||||
void setDoesNotReturn(bool DoesNotReturn = true) {
|
||||
if (DoesNotReturn) addAttribute(~0, Attribute::NoReturn);
|
||||
else removeAttribute(~0, Attribute::NoReturn);
|
||||
}
|
||||
|
||||
/// @brief Determine if the call cannot unwind.
|
||||
bool doesNotThrow() const { return hasFnAttr(Attribute::NoUnwind); }
|
||||
bool doesNotThrow() const { return fnHasNoUnwindAttr(); }
|
||||
void setDoesNotThrow(bool DoesNotThrow = true) {
|
||||
if (DoesNotThrow) addAttribute(~0, Attribute::NoUnwind);
|
||||
else removeAttribute(~0, Attribute::NoUnwind);
|
||||
@ -1342,7 +1351,7 @@ public:
|
||||
/// pointer argument.
|
||||
bool hasStructRetAttr() const {
|
||||
// Be friendly and also check the callee.
|
||||
return paramHasAttr(1, Attribute::StructRet);
|
||||
return paramHasStructRetAttr(1);
|
||||
}
|
||||
|
||||
/// @brief Determine if any call argument is an aggregate passed by value.
|
||||
@ -3039,6 +3048,15 @@ public:
|
||||
/// removeAttribute - removes the attribute from the list of attributes.
|
||||
void removeAttribute(unsigned i, Attributes attr);
|
||||
|
||||
/// @brief Determine whether this call has the NoAlias attribute.
|
||||
bool fnHasNoAliasAttr() const;
|
||||
bool fnHasNoInlineAttr() const;
|
||||
bool fnHasNoReturnAttr() const;
|
||||
bool fnHasNoUnwindAttr() const;
|
||||
bool fnHasReadNoneAttr() const;
|
||||
bool fnHasReadOnlyAttr() const;
|
||||
bool fnHasReturnsTwiceAttr() const;
|
||||
|
||||
/// \brief Return true if this call has the given attribute.
|
||||
bool hasFnAttr(Attributes N) const {
|
||||
return paramHasAttr(~0, N);
|
||||
@ -3063,7 +3081,7 @@ public:
|
||||
}
|
||||
|
||||
/// @brief Return true if the call should not be inlined.
|
||||
bool isNoInline() const { return hasFnAttr(Attribute::NoInline); }
|
||||
bool isNoInline() const { return fnHasNoInlineAttr(); }
|
||||
void setIsNoInline(bool Value = true) {
|
||||
if (Value) addAttribute(~0, Attribute::NoInline);
|
||||
else removeAttribute(~0, Attribute::NoInline);
|
||||
@ -3071,7 +3089,7 @@ public:
|
||||
|
||||
/// @brief Determine if the call does not access memory.
|
||||
bool doesNotAccessMemory() const {
|
||||
return hasFnAttr(Attribute::ReadNone);
|
||||
return fnHasReadNoneAttr();
|
||||
}
|
||||
void setDoesNotAccessMemory(bool NotAccessMemory = true) {
|
||||
if (NotAccessMemory) addAttribute(~0, Attribute::ReadNone);
|
||||
@ -3080,7 +3098,7 @@ public:
|
||||
|
||||
/// @brief Determine if the call does not access or only reads memory.
|
||||
bool onlyReadsMemory() const {
|
||||
return doesNotAccessMemory() || hasFnAttr(Attribute::ReadOnly);
|
||||
return doesNotAccessMemory() || fnHasReadOnlyAttr();
|
||||
}
|
||||
void setOnlyReadsMemory(bool OnlyReadsMemory = true) {
|
||||
if (OnlyReadsMemory) addAttribute(~0, Attribute::ReadOnly);
|
||||
@ -3088,14 +3106,14 @@ public:
|
||||
}
|
||||
|
||||
/// @brief Determine if the call cannot return.
|
||||
bool doesNotReturn() const { return hasFnAttr(Attribute::NoReturn); }
|
||||
bool doesNotReturn() const { return fnHasNoReturnAttr(); }
|
||||
void setDoesNotReturn(bool DoesNotReturn = true) {
|
||||
if (DoesNotReturn) addAttribute(~0, Attribute::NoReturn);
|
||||
else removeAttribute(~0, Attribute::NoReturn);
|
||||
}
|
||||
|
||||
/// @brief Determine if the call cannot unwind.
|
||||
bool doesNotThrow() const { return hasFnAttr(Attribute::NoUnwind); }
|
||||
bool doesNotThrow() const { return fnHasNoUnwindAttr(); }
|
||||
void setDoesNotThrow(bool DoesNotThrow = true) {
|
||||
if (DoesNotThrow) addAttribute(~0, Attribute::NoUnwind);
|
||||
else removeAttribute(~0, Attribute::NoUnwind);
|
||||
@ -3105,7 +3123,7 @@ public:
|
||||
/// pointer argument.
|
||||
bool hasStructRetAttr() const {
|
||||
// Be friendly and also check the callee.
|
||||
return paramHasAttr(1, Attribute::StructRet);
|
||||
return paramHasStructRetAttr(1);
|
||||
}
|
||||
|
||||
/// @brief Determine if any call argument is an aggregate passed by value.
|
||||
|
@ -185,6 +185,27 @@ public:
|
||||
}
|
||||
|
||||
/// \brief Return true if this function has the given attribute.
|
||||
bool fnHasNoAliasAttr() const {
|
||||
CALLSITE_DELEGATE_GETTER(fnHasNoAliasAttr());
|
||||
}
|
||||
bool fnHasNoInlineAttr() const {
|
||||
CALLSITE_DELEGATE_GETTER(fnHasNoInlineAttr());
|
||||
}
|
||||
bool fnHasNoReturnAttr() const {
|
||||
CALLSITE_DELEGATE_GETTER(fnHasNoReturnAttr());
|
||||
}
|
||||
bool fnHasNoUnwindAttr() const {
|
||||
CALLSITE_DELEGATE_GETTER(fnHasNoUnwindAttr());
|
||||
}
|
||||
bool fnHasReadNoneAttr() const {
|
||||
CALLSITE_DELEGATE_GETTER(fnHasReadNoneAttr());
|
||||
}
|
||||
bool fnHasReadOnlyAttr() const {
|
||||
CALLSITE_DELEGATE_GETTER(fnHasReadOnlyAttr());
|
||||
}
|
||||
bool fnHasReturnsTwiceAttr() const {
|
||||
CALLSITE_DELEGATE_GETTER(fnHasReturnsTwiceAttr());
|
||||
}
|
||||
bool hasFnAttr(Attributes N) const {
|
||||
CALLSITE_DELEGATE_GETTER(hasFnAttr(N));
|
||||
}
|
||||
|
@ -132,7 +132,7 @@ static const AllocFnsTy *getAllocationData(const Value *V, AllocType AllocTy,
|
||||
|
||||
static bool hasNoAliasAttr(const Value *V, bool LookThroughBitCast) {
|
||||
ImmutableCallSite CS(LookThroughBitCast ? V->stripPointerCasts() : V);
|
||||
return CS && CS.hasFnAttr(Attribute::NoAlias);
|
||||
return CS && CS.fnHasNoAliasAttr();
|
||||
}
|
||||
|
||||
|
||||
|
@ -342,6 +342,56 @@ void CallInst::removeAttribute(unsigned i, Attributes attr) {
|
||||
setAttributes(PAL);
|
||||
}
|
||||
|
||||
bool CallInst::fnHasNoAliasAttr() const {
|
||||
if (AttributeList.getParamAttributes(~0U).hasNoAliasAttr())
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getParamAttributes(~0U).hasNoAliasAttr();
|
||||
return false;
|
||||
}
|
||||
bool CallInst::fnHasNoInlineAttr() const {
|
||||
if (AttributeList.getParamAttributes(~0U).hasNoInlineAttr())
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getParamAttributes(~0U).hasNoInlineAttr();
|
||||
return false;
|
||||
}
|
||||
bool CallInst::fnHasNoReturnAttr() const {
|
||||
if (AttributeList.getParamAttributes(~0U).hasNoReturnAttr())
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getParamAttributes(~0U).hasNoReturnAttr();
|
||||
return false;
|
||||
}
|
||||
bool CallInst::fnHasNoUnwindAttr() const {
|
||||
if (AttributeList.getParamAttributes(~0U).hasNoUnwindAttr())
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getParamAttributes(~0U).hasNoUnwindAttr();
|
||||
return false;
|
||||
}
|
||||
bool CallInst::fnHasReadNoneAttr() const {
|
||||
if (AttributeList.getParamAttributes(~0U).hasReadNoneAttr())
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getParamAttributes(~0U).hasReadNoneAttr();
|
||||
return false;
|
||||
}
|
||||
bool CallInst::fnHasReadOnlyAttr() const {
|
||||
if (AttributeList.getParamAttributes(~0U).hasReadOnlyAttr())
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getParamAttributes(~0U).hasReadOnlyAttr();
|
||||
return false;
|
||||
}
|
||||
bool CallInst::fnHasReturnsTwiceAttr() const {
|
||||
if (AttributeList.getParamAttributes(~0U).hasReturnsTwiceAttr())
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getParamAttributes(~0U).hasReturnsTwiceAttr();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CallInst::paramHasSExtAttr(unsigned i) const {
|
||||
if (AttributeList.getParamAttributes(i).hasSExtAttr())
|
||||
return true;
|
||||
@ -626,6 +676,56 @@ void InvokeInst::setSuccessorV(unsigned idx, BasicBlock *B) {
|
||||
return setSuccessor(idx, B);
|
||||
}
|
||||
|
||||
bool InvokeInst::fnHasNoAliasAttr() const {
|
||||
if (AttributeList.getParamAttributes(~0U).hasNoAliasAttr())
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getParamAttributes(~0U).hasNoAliasAttr();
|
||||
return false;
|
||||
}
|
||||
bool InvokeInst::fnHasNoInlineAttr() const {
|
||||
if (AttributeList.getParamAttributes(~0U).hasNoInlineAttr())
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getParamAttributes(~0U).hasNoInlineAttr();
|
||||
return false;
|
||||
}
|
||||
bool InvokeInst::fnHasNoReturnAttr() const {
|
||||
if (AttributeList.getParamAttributes(~0U).hasNoReturnAttr())
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getParamAttributes(~0U).hasNoReturnAttr();
|
||||
return false;
|
||||
}
|
||||
bool InvokeInst::fnHasNoUnwindAttr() const {
|
||||
if (AttributeList.getParamAttributes(~0U).hasNoUnwindAttr())
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getParamAttributes(~0U).hasNoUnwindAttr();
|
||||
return false;
|
||||
}
|
||||
bool InvokeInst::fnHasReadNoneAttr() const {
|
||||
if (AttributeList.getParamAttributes(~0U).hasReadNoneAttr())
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getParamAttributes(~0U).hasReadNoneAttr();
|
||||
return false;
|
||||
}
|
||||
bool InvokeInst::fnHasReadOnlyAttr() const {
|
||||
if (AttributeList.getParamAttributes(~0U).hasReadOnlyAttr())
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getParamAttributes(~0U).hasReadOnlyAttr();
|
||||
return false;
|
||||
}
|
||||
bool InvokeInst::fnHasReturnsTwiceAttr() const {
|
||||
if (AttributeList.getParamAttributes(~0U).hasReturnsTwiceAttr())
|
||||
return true;
|
||||
if (const Function *F = getCalledFunction())
|
||||
return F->getParamAttributes(~0U).hasReturnsTwiceAttr();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool InvokeInst::paramHasSExtAttr(unsigned i) const {
|
||||
if (AttributeList.getParamAttributes(i).hasSExtAttr())
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user