mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-22 10:24:26 +00:00
Rather than having special rules like "intrinsics cannot
throw exceptions", just mark intrinsics with the nounwind attribute. Likewise, mark intrinsics as readnone/readonly and get rid of special aliasing logic (which didn't use anything more than this anyway). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44544 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -927,6 +927,21 @@ public:
|
||||
/// @brief Determine whether the call or the callee has the given attribute.
|
||||
bool paramHasAttr(uint16_t i, ParameterAttributes attr) const;
|
||||
|
||||
/// @brief Determine if the call does not access memory.
|
||||
bool doesNotAccessMemory() const {
|
||||
return paramHasAttr(0, ParamAttr::ReadNone);
|
||||
}
|
||||
|
||||
/// @brief Determine if the call does not access or only reads memory.
|
||||
bool onlyReadsMemory() const {
|
||||
return doesNotAccessMemory() || paramHasAttr(0, ParamAttr::ReadOnly);
|
||||
}
|
||||
|
||||
/// @brief Determine if the call cannot unwind.
|
||||
bool isNoUnwind() const {
|
||||
return paramHasAttr(0, ParamAttr::NoUnwind);
|
||||
}
|
||||
|
||||
/// @brief Determine if the call returns a structure.
|
||||
bool isStructReturn() const {
|
||||
// Be friendly and also check the callee.
|
||||
@ -1711,6 +1726,21 @@ public:
|
||||
/// @brief Determine whether the call or the callee has the given attribute.
|
||||
bool paramHasAttr(uint16_t i, ParameterAttributes attr) const;
|
||||
|
||||
/// @brief Determine if the call does not access memory.
|
||||
bool doesNotAccessMemory() const {
|
||||
return paramHasAttr(0, ParamAttr::ReadNone);
|
||||
}
|
||||
|
||||
/// @brief Determine if the call does not access or only reads memory.
|
||||
bool onlyReadsMemory() const {
|
||||
return doesNotAccessMemory() || paramHasAttr(0, ParamAttr::ReadOnly);
|
||||
}
|
||||
|
||||
/// @brief Determine if the call cannot unwind.
|
||||
bool isNoUnwind() const {
|
||||
return paramHasAttr(0, ParamAttr::NoUnwind);
|
||||
}
|
||||
|
||||
/// @brief Determine if the call returns a structure.
|
||||
bool isStructReturn() const {
|
||||
// Be friendly and also check the callee.
|
||||
|
Reference in New Issue
Block a user