Changed declarations from Attr to InheritableAttr as they are already being processed that way semantically.
Patch thanks to Dean Sutherland! Reviewed by Eli Friedman.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186598 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/clang/Basic/Attr.td b/include/clang/Basic/Attr.td
index cdb567d..8c820a0 100644
--- a/include/clang/Basic/Attr.td
+++ b/include/clang/Basic/Attr.td
@@ -169,13 +169,13 @@
def AlignMac68k : InheritableAttr {
let Spellings = [];
- let SemaHandler = 0;
-}
-
-def AllocSize : Attr {
- let Spellings = [GNU<"alloc_size">, CXX11<"gnu", "alloc_size">];
- let Args = [VariadicUnsignedArgument<"Args">];
-}
+ let SemaHandler = 0;
+}
+
+def AllocSize : InheritableAttr {
+ let Spellings = [GNU<"alloc_size">, CXX11<"gnu", "alloc_size">];
+ let Args = [VariadicUnsignedArgument<"Args">];
+}
def AlwaysInline : InheritableAttr {
let Spellings = [GNU<"always_inline">, CXX11<"gnu", "always_inline">];
@@ -323,17 +323,17 @@
def CXX11NoReturn : InheritableAttr {
let Spellings = [CXX11<"","noreturn">, CXX11<"std","noreturn">];
- let Subjects = [Function];
-}
-
-def OpenCLKernel : Attr {
- let Spellings = [Keyword<"__kernel">, Keyword<"kernel">];
-}
-
-def OpenCLImageAccess : Attr {
- let Spellings = [GNU<"opencl_image_access">];
- let Args = [IntArgument<"Access">];
-}
+ let Subjects = [Function];
+}
+
+def OpenCLKernel : InheritableAttr {
+ let Spellings = [Keyword<"__kernel">, Keyword<"kernel">];
+}
+
+def OpenCLImageAccess : Attr {
+ let Spellings = [GNU<"opencl_image_access">];
+ let Args = [IntArgument<"Access">];
+}
def Deprecated : InheritableAttr {
let Spellings = [GNU<"deprecated">, CXX11<"gnu", "deprecated">];
@@ -342,13 +342,13 @@
def Destructor : InheritableAttr {
let Spellings = [GNU<"destructor">, CXX11<"gnu", "destructor">];
- let Args = [IntArgument<"Priority">];
-}
-
-def ExtVectorType : Attr {
- let Spellings = [GNU<"ext_vector_type">];
- let Args = [ExprArgument<"NumElements">];
- let ASTNode = 0;
+ let Args = [IntArgument<"Priority">];
+}
+
+def ExtVectorType : Attr {
+ let Spellings = [GNU<"ext_vector_type">];
+ let Args = [ExprArgument<"NumElements">];
+ let ASTNode = 0;
}
def FallThrough : Attr {
@@ -435,13 +435,13 @@
def Mips16 : InheritableAttr {
let Spellings = [GNU<"mips16">, CXX11<"gnu", "mips16">];
- let Subjects = [Function];
-}
-
-def Mode : Attr {
- let Spellings = [GNU<"mode">, CXX11<"gnu", "mode">];
- let Args = [IdentifierArgument<"Mode">];
-}
+ let Subjects = [Function];
+}
+
+def Mode : Attr {
+ let Spellings = [GNU<"mode">, CXX11<"gnu", "mode">];
+ let Args = [IdentifierArgument<"Mode">];
+}
def Naked : InheritableAttr {
let Spellings = [GNU<"naked">, CXX11<"gnu", "naked">];
@@ -554,28 +554,28 @@
}
def ObjCNSObject : InheritableAttr {
- let Spellings = [GNU<"NSObject">];
-}
-
-def ObjCPreciseLifetime : Attr {
- let Spellings = [GNU<"objc_precise_lifetime">];
- let Subjects = [Var];
-}
-
-def ObjCReturnsInnerPointer : Attr {
- let Spellings = [GNU<"objc_returns_inner_pointer">];
- let Subjects = [ObjCMethod];
-}
+ let Spellings = [GNU<"NSObject">];
+}
+
+def ObjCPreciseLifetime : InheritableAttr {
+ let Spellings = [GNU<"objc_precise_lifetime">];
+ let Subjects = [Var];
+}
+
+def ObjCReturnsInnerPointer : InheritableAttr {
+ let Spellings = [GNU<"objc_returns_inner_pointer">];
+ let Subjects = [ObjCMethod];
+}
def ObjCRequiresSuper : InheritableAttr {
let Spellings = [GNU<"objc_requires_super">];
- let Subjects = [ObjCMethod];
-}
-
-def ObjCRootClass : Attr {
- let Spellings = [GNU<"objc_root_class">];
- let Subjects = [ObjCInterface];
-}
+ let Subjects = [ObjCMethod];
+}
+
+def ObjCRootClass : InheritableAttr {
+ let Spellings = [GNU<"objc_root_class">];
+ let Subjects = [ObjCInterface];
+}
def Overloadable : Attr {
let Spellings = [GNU<"overloadable">];
@@ -689,13 +689,13 @@
def ObjCGC : Attr {
let Spellings = [GNU<"objc_gc">];
let Args = [IdentifierArgument<"Kind">];
- let ASTNode = 0;
-}
-
-def ObjCOwnership : Attr {
- let Spellings = [GNU<"objc_ownership">];
- let Args = [IdentifierArgument<"Kind">];
- let ASTNode = 0;
+ let ASTNode = 0;
+}
+
+def ObjCOwnership : InheritableAttr {
+ let Spellings = [GNU<"objc_ownership">];
+ let Args = [IdentifierArgument<"Kind">];
+ let ASTNode = 0;
}
def ObjCRequiresPropertyDefs : InheritableAttr {