/// A type attribute is not processed on a declaration or a statement.
class TypeAttr : Attr {
+ // By default, type attributes do not get an AST node.
let ASTNode = 0;
}
def AddressSpace : TypeAttr {
let Spellings = [GNU<"address_space">];
let Args = [IntArgument<"AddressSpace">];
- let ASTNode = 0;
}
def Alias : Attr {
def NeonPolyVectorType : TypeAttr {
let Spellings = [GNU<"neon_polyvector_type">];
let Args = [IntArgument<"NumElements">];
- let ASTNode = 0;
}
def NeonVectorType : TypeAttr {
let Spellings = [GNU<"neon_vector_type">];
let Args = [IntArgument<"NumElements">];
- let ASTNode = 0;
}
def ReturnsTwice : InheritableAttr {
def ObjCGC : TypeAttr {
let Spellings = [GNU<"objc_gc">];
let Args = [IdentifierArgument<"Kind">];
- let ASTNode = 0;
}
def ObjCOwnership : InheritableAttr {
def VectorSize : TypeAttr {
let Spellings = [GNU<"vector_size">, CXX11<"gnu", "vector_size">];
let Args = [ExprArgument<"NumBytes">];
- let ASTNode = 0;
}
def VecTypeHint : InheritableAttr {
def Ptr32 : TypeAttr {
let Spellings = [Keyword<"__ptr32">];
- let ASTNode = 0;
}
def Ptr64 : TypeAttr {
let Spellings = [Keyword<"__ptr64">];
- let ASTNode = 0;
}
def SPtr : TypeAttr {
let Spellings = [Keyword<"__sptr">];
- let ASTNode = 0;
}
def UPtr : TypeAttr {
let Spellings = [Keyword<"__uptr">];
- let ASTNode = 0;
}
def MSInheritance : InheritableAttr {