diff options
-rw-r--r-- | include/llvm/Attributes.h | 24 | ||||
-rw-r--r-- | lib/VMCore/Verifier.cpp | 20 |
2 files changed, 19 insertions, 25 deletions
diff --git a/include/llvm/Attributes.h b/include/llvm/Attributes.h index dff4819023..a6297e0f7f 100644 --- a/include/llvm/Attributes.h +++ b/include/llvm/Attributes.h @@ -117,30 +117,6 @@ public: /// alignment value. unsigned getStackAlignment() const; - /// \brief Attribute that may be applied to the function itself. These cannot - /// be used on return values or function parameters. - bool hasFunctionOnlyAttrs() const { - return hasAttribute(Attribute::NoReturn) || - hasAttribute(Attribute::NoUnwind) || - hasAttribute(Attribute::ReadNone) || - hasAttribute(Attribute::ReadOnly) || - hasAttribute(Attribute::NoInline) || - hasAttribute(Attribute::AlwaysInline) || - hasAttribute(Attribute::OptimizeForSize) || - hasAttribute(Attribute::StackProtect) || - hasAttribute(Attribute::StackProtectReq) || - hasAttribute(Attribute::NoRedZone) || - hasAttribute(Attribute::NoImplicitFloat) || - hasAttribute(Attribute::Naked) || - hasAttribute(Attribute::InlineHint) || - hasAttribute(Attribute::StackAlignment) || - hasAttribute(Attribute::UWTable) || - hasAttribute(Attribute::NonLazyBind) || - hasAttribute(Attribute::ReturnsTwice) || - hasAttribute(Attribute::AddressSafety) || - hasAttribute(Attribute::MinSize); - } - bool operator==(const Attribute &A) const { return Attrs == A.Attrs; } diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp index 17301872ea..aec44355fa 100644 --- a/lib/VMCore/Verifier.cpp +++ b/lib/VMCore/Verifier.cpp @@ -529,7 +529,25 @@ void Verifier::VerifyParameterAttrs(Attribute Attrs, Type *Ty, if (!Attrs.hasAttributes()) return; - Assert1(!Attrs.hasFunctionOnlyAttrs(), + Assert1(!Attrs.hasAttribute(Attribute::NoReturn) && + !Attrs.hasAttribute(Attribute::NoUnwind) && + !Attrs.hasAttribute(Attribute::ReadNone) && + !Attrs.hasAttribute(Attribute::ReadOnly) && + !Attrs.hasAttribute(Attribute::NoInline) && + !Attrs.hasAttribute(Attribute::AlwaysInline) && + !Attrs.hasAttribute(Attribute::OptimizeForSize) && + !Attrs.hasAttribute(Attribute::StackProtect) && + !Attrs.hasAttribute(Attribute::StackProtectReq) && + !Attrs.hasAttribute(Attribute::NoRedZone) && + !Attrs.hasAttribute(Attribute::NoImplicitFloat) && + !Attrs.hasAttribute(Attribute::Naked) && + !Attrs.hasAttribute(Attribute::InlineHint) && + !Attrs.hasAttribute(Attribute::StackAlignment) && + !Attrs.hasAttribute(Attribute::UWTable) && + !Attrs.hasAttribute(Attribute::NonLazyBind) && + !Attrs.hasAttribute(Attribute::ReturnsTwice) && + !Attrs.hasAttribute(Attribute::AddressSafety) && + !Attrs.hasAttribute(Attribute::MinSize), "Some attributes in '" + Attrs.getAsString() + "' only apply to functions!", V); |