// in a class template definition.
bit MeaningfulToClassTemplateDefinition = 0;
// Set to true if this attribute can be used with '#pragma clang attribute'.
- // By default, when this value is false, an attribute is supported by the
- // '#pragma clang attribute' only when:
- // - It has documentation.
+ // By default, an attribute is supported by the '#pragma clang attribute'
+ // only when:
// - It has a subject list whose subjects can be represented using subject
// match rules.
// - It has GNU/CXX11 spelling and doesn't require delayed parsing.
- bit ForcePragmaAttributeSupport = 0;
+ bit PragmaAttributeSupport;
// Lists language options, one of which is required to be true for the
// attribute to be applicable. If empty, no language options are required.
list<LangOpt> LangOpts = [];
let ASTNode = 0;
let SemaHandler = 0;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
//
let Spellings = [Clang<"address_space">];
let Args = [IntArgument<"AddressSpace">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Alias : Attr {
let Args = [StringArgument<"Aliasee">];
let Subjects = SubjectList<[Function, GlobalVar], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Aligned : InheritableAttr {
Keyword<"_Alignas">]>,
Accessor<"isDeclspec",[Declspec<"align">]>];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def AlignValue : Attr {
let Spellings = [];
let SemaHandler = 0;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def AlwaysInline : InheritableAttr {
let Spellings = [GCC<"always_inline">, Keyword<"__forceinline">];
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Artificial : InheritableAttr {
// analyzer?
let Spellings = [GNU<"analyzer_noreturn">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Annotate : InheritableParamAttr {
let Args = [StringArgument<"Annotation">];
// Ensure that the annotate attribute can be used with
// '#pragma clang attribute' even though it has no subject list.
- let ForcePragmaAttributeSupport = 1;
+ let PragmaAttributeSupport = 1;
let Documentation = [Undocumented];
}
let Args = [StringArgument<"Label">];
let SemaHandler = 0;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Availability : InheritableAttr {
let Spellings = [Clang<"blocks">];
let Args = [EnumArgument<"Type", "BlockType", ["byref"], ["ByRef"]>];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Bounded : IgnoredAttr {
let Spellings = [GCC<"cdecl">, Keyword<"__cdecl">, Keyword<"_cdecl">];
// let Subjects = [Function, ObjCMethod];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
// cf_audited_transfer indicates that the given function has been
let Spellings = [Clang<"cf_audited_transfer">];
let Subjects = SubjectList<[Function], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
// cf_unknown_transfer is an explicit opt-out of cf_audited_transfer.
let Spellings = [Clang<"cf_unknown_transfer">];
let Subjects = SubjectList<[Function], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def CFReturnsRetained : InheritableAttr {
let Spellings = [Clang<"cf_returns_retained">];
// let Subjects = SubjectList<[ObjCMethod, ObjCProperty, Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def CFReturnsNotRetained : InheritableAttr {
let Spellings = [Clang<"cf_returns_not_retained">];
// let Subjects = SubjectList<[ObjCMethod, ObjCProperty, Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def CFConsumed : InheritableParamAttr {
let Spellings = [Clang<"cf_consumed">];
let Subjects = SubjectList<[ParmVar]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Cleanup : InheritableAttr {
let Args = [FunctionArgument<"FunctionDecl">];
let Subjects = SubjectList<[LocalVar]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Cold : InheritableAttr {
let Spellings = [GCC<"cold">];
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Common : InheritableAttr {
let Spellings = [GCC<"common">];
let Subjects = SubjectList<[Var]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Const : InheritableAttr {
let Spellings = [GCC<"const">, GCC<"__const">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Constructor : InheritableAttr {
let Args = [DefaultIntArgument<"Priority", 65535>];
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def CPUSpecific : InheritableAttr {
let Subjects = SubjectList<[Var]>;
let LangOpts = [CUDA];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def CUDACudartBuiltin : IgnoredAttr {
let Subjects = SubjectList<[Function, Var]>;
let LangOpts = [CUDA];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def CUDADeviceBuiltin : IgnoredAttr {
let Subjects = SubjectList<[Function]>;
let LangOpts = [CUDA];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def CUDAHost : InheritableAttr {
let Subjects = SubjectList<[Function]>;
let LangOpts = [CUDA];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def CUDAInvalidTarget : InheritableAttr {
let Subjects = SubjectList<[Function]>;
let LangOpts = [CUDA];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def CUDALaunchBounds : InheritableAttr {
// of the compiler. However, this node needs to exist in the AST because
// non-LLVM backends may be relying on the attribute's presence.
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def CUDAShared : InheritableAttr {
let Subjects = SubjectList<[Var]>;
let LangOpts = [CUDA];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def C11NoReturn : InheritableAttr {
let Spellings = [Keyword<"__kernel">, Keyword<"kernel">];
let Subjects = SubjectList<[Function], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def OpenCLUnrollHint : InheritableAttr {
let Args = [DefaultIntArgument<"Priority", 65535>];
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def EmptyBases : InheritableAttr, TargetSpecificAttr<TargetMicrosoftCXXABI> {
let Args = [ExprArgument<"NumElements">];
let ASTNode = 0;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def FallThrough : StmtAttr {
let Accessors = [Accessor<"isSpelledAsSealed", [Keyword<"sealed">]>];
let SemaHandler = 0;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def MinSize : InheritableAttr {
let Spellings = [Clang<"minsize">];
let Subjects = SubjectList<[Function, ObjCMethod], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def FlagEnum : InheritableAttr {
let Args = [ParamIdxArgument<"FormatIdx">];
let Subjects = SubjectList<[ObjCMethod, HasFunctionProto]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def GNUInline : InheritableAttr {
// An AST node is created for this attribute, but not actually used beyond
// semantic checking for mutual exclusion with the Cold attribute.
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def IBAction : InheritableAttr {
// of the compiler. However, this node needs to exist in the AST because
// external tools rely on it.
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def IBOutlet : InheritableAttr {
let Spellings = [Clang<"iboutlet">];
// let Subjects = [ObjCIvar, ObjCProperty];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def IBOutletCollection : InheritableAttr {
let Args = [TypeArgument<"Interface", 1>];
// let Subjects = [ObjCIvar, ObjCProperty];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def IFunc : Attr, TargetSpecificAttr<TargetELF> {
let Spellings = [Declspec<"restrict">, GCC<"malloc">];
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def LayoutVersion : InheritableAttr, TargetSpecificAttr<TargetMicrosoftCXXABI> {
let Args = [UnsignedArgument<"Alignment">];
let SemaHandler = 0;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def MayAlias : InheritableAttr {
// FIXME: this is a type attribute in GCC, but a declaration attribute here.
let Spellings = [GCC<"may_alias">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def MSABI : DeclOrTypeAttr {
let ParseKind = "Interrupt";
let HasCustomParsing = 1;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Mips16 : InheritableAttr, TargetSpecificAttr<TargetMips32> {
let Spellings = [GCC<"mips16">];
let Subjects = SubjectList<[Function], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def MipsInterrupt : InheritableAttr, TargetSpecificAttr<TargetMips32> {
let Subjects = SubjectList<[Var, Enum, TypedefName, Field], ErrorDiag>;
let Args = [IdentifierArgument<"Mode">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Naked : InheritableAttr {
let Spellings = [GCC<"naked">, Declspec<"naked">];
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def NeonPolyVectorType : TypeAttr {
let Spellings = [Clang<"neon_polyvector_type">];
let Args = [IntArgument<"NumElements">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
// Represented as VectorType instead.
let ASTNode = 0;
}
let Spellings = [Clang<"neon_vector_type">];
let Args = [IntArgument<"NumElements">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
// Represented as VectorType instead.
let ASTNode = 0;
}
let Spellings = [GCC<"returns_twice">];
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def DisableTailCalls : InheritableAttr {
let Spellings = [GCC<"nocommon">];
let Subjects = SubjectList<[Var]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def NoDebug : InheritableAttr {
let Spellings = [GCC<"noinline">, Declspec<"noinline">];
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def NoMips16 : InheritableAttr, TargetSpecificAttr<TargetMips32> {
let Spellings = [GCC<"nomips16">];
let Subjects = SubjectList<[Function], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def NoMicroMips : InheritableAttr, TargetSpecificAttr<TargetMips32> {
def ObjCInertUnsafeUnretained : TypeAttr {
let Spellings = [Keyword<"__unsafe_unretained">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ObjCKindOf : TypeAttr {
let Spellings = [Keyword<"__kindof">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def NoEscape : Attr {
let Spellings = [GCC<"noreturn">, Declspec<"noreturn">];
// FIXME: Does GCC allow this on the function instead?
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def NoInstrumentFunction : InheritableAttr {
let Spellings = [GCC<"no_instrument_function">];
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def NotTailCalled : InheritableAttr {
let Subjects = SubjectList<[Record, TypedefName], ErrorDiag>;
let Args = [IdentifierArgument<"BridgedType">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ObjCBridgeMutable : InheritableAttr {
let Subjects = SubjectList<[Record], ErrorDiag>;
let Args = [IdentifierArgument<"BridgedType">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ObjCBridgeRelated : InheritableAttr {
IdentifierArgument<"InstanceMethod">];
let HasCustomParsing = 1;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def NSReturnsRetained : DeclOrTypeAttr {
let Spellings = [Clang<"ns_returns_retained">];
// let Subjects = SubjectList<[ObjCMethod, ObjCProperty, Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def NSReturnsNotRetained : InheritableAttr {
let Spellings = [Clang<"ns_returns_not_retained">];
// let Subjects = SubjectList<[ObjCMethod, ObjCProperty, Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def NSReturnsAutoreleased : InheritableAttr {
let Spellings = [Clang<"ns_returns_autoreleased">];
// let Subjects = SubjectList<[ObjCMethod, ObjCProperty, Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def NSConsumesSelf : InheritableAttr {
let Spellings = [Clang<"ns_consumes_self">];
let Subjects = SubjectList<[ObjCMethod]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def NSConsumed : InheritableParamAttr {
let Spellings = [Clang<"ns_consumed">];
let Subjects = SubjectList<[ParmVar]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ObjCException : InheritableAttr {
let Spellings = [Clang<"objc_exception">];
let Subjects = SubjectList<[ObjCInterface], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ObjCMethodFamily : InheritableAttr {
def ObjCNSObject : InheritableAttr {
let Spellings = [Clang<"NSObject">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ObjCIndependentClass : InheritableAttr {
let Spellings = [Clang<"objc_independent_class">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ObjCPreciseLifetime : InheritableAttr {
let Spellings = [Clang<"objc_precise_lifetime">];
let Subjects = SubjectList<[Var], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ObjCReturnsInnerPointer : InheritableAttr {
let Spellings = [Clang<"objc_returns_inner_pointer">];
let Subjects = SubjectList<[ObjCMethod, ObjCProperty], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ObjCRequiresSuper : InheritableAttr {
let Spellings = [Clang<"objc_root_class">];
let Subjects = SubjectList<[ObjCInterface], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ObjCSubclassingRestricted : InheritableAttr {
let Spellings = [Clang<"objc_protocol_requires_explicit_implementation">];
let Subjects = SubjectList<[ObjCProtocol], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ObjCDesignatedInitializer : Attr {
let Spellings = [Clang<"objc_designated_initializer">];
let Subjects = SubjectList<[ObjCInterfaceDeclInitMethod], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ObjCRuntimeName : Attr {
let Spellings = [Keyword<"override">];
let SemaHandler = 0;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Ownership : InheritableAttr {
VariadicParamIdxArgument<"Args">];
let Subjects = SubjectList<[HasFunctionProto]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Packed : InheritableAttr {
let Spellings = [GCC<"packed">];
// let Subjects = [Tag, Field];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def IntelOclBicc : DeclOrTypeAttr {
let Spellings = [Clang<"intel_ocl_bicc", 0>];
// let Subjects = [Function, ObjCMethod];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Pcs : DeclOrTypeAttr {
def Pure : InheritableAttr {
let Spellings = [GCC<"pure">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Regparm : TypeAttr {
UnsignedArgument<"ZDim">];
let Subjects = SubjectList<[Function], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def RequireConstantInit : InheritableAttr {
UnsignedArgument<"ZDim">];
let Subjects = SubjectList<[Function], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def InitPriority : InheritableAttr {
let Args = [UnsignedArgument<"Priority">];
let Subjects = SubjectList<[Var], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Section : InheritableAttr {
let Args = [StringArgument<"Name">];
let Subjects = SubjectList<[GlobalVar], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def PragmaClangDataSection : InheritableAttr {
let Args = [StringArgument<"Name">];
let Subjects = SubjectList<[GlobalVar], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def PragmaClangRodataSection : InheritableAttr {
let Args = [StringArgument<"Name">];
let Subjects = SubjectList<[GlobalVar], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def PragmaClangTextSection : InheritableAttr {
let Args = [StringArgument<"Name">];
let Subjects = SubjectList<[Function], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Sentinel : InheritableAttr {
DefaultIntArgument<"NullPos", 0>];
// let Subjects = SubjectList<[Function, ObjCMethod, Block, Var]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def StdCall : DeclOrTypeAttr {
let Spellings = [GCC<"sysv_abi">];
// let Subjects = [Function, ObjCMethod];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ThisCall : DeclOrTypeAttr {
let Spellings = [Clang<"pascal">, Keyword<"__pascal">, Keyword<"_pascal">];
// let Subjects = [Function, ObjCMethod];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def PreserveMost : DeclOrTypeAttr {
"IR_ARCInitReturnsUnrelated",
"IR_ARCFieldWithOwnership"], 1, /*fake*/ 1>];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def DiagnoseIf : InheritableAttr {
let Spellings = [Clang<"objc_arc_weak_reference_unavailable">];
let Subjects = SubjectList<[ObjCInterface], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ObjCGC : TypeAttr {
let Spellings = [Clang<"objc_gc">];
let Args = [IdentifierArgument<"Kind">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ObjCOwnership : DeclOrTypeAttr {
let Spellings = [Clang<"objc_ownership">];
let Args = [IdentifierArgument<"Kind">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ObjCRequiresPropertyDefs : InheritableAttr {
let Spellings = [Clang<"objc_requires_property_definitions">];
let Subjects = SubjectList<[ObjCInterface], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Unused : InheritableAttr {
let Spellings = [GCC<"used">];
let Subjects = SubjectList<[NonLocalVar, Function, ObjCMethod]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Uuid : InheritableAttr {
// CPlusPlus && (MicrosoftExt || Borland)
let LangOpts = [MicrosoftExt, Borland];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def VectorSize : TypeAttr {
let Spellings = [GCC<"vector_size">];
let Args = [ExprArgument<"NumBytes">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
// Represented as VectorType instead.
let ASTNode = 0;
}
let Args = [TypeArgument<"TypeHint">];
let Subjects = SubjectList<[Function], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Visibility : InheritableAttr {
["Default", "Hidden", "Hidden", "Protected"]>];
let MeaningfulToClassTemplateDefinition = 1;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def TypeVisibility : InheritableAttr {
["Default", "Hidden", "Hidden", "Protected"]>];
// let Subjects = [Tag, ObjCInterface, Namespace];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def VecReturn : InheritableAttr {
let Spellings = [Clang<"vecreturn", 0>];
let Subjects = SubjectList<[CXXRecord], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def WarnUnused : InheritableAttr {
let Spellings = [GCC<"warn_unused">];
let Subjects = SubjectList<[Record]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def WarnUnusedResult : InheritableAttr {
let Spellings = [GCC<"weak">];
let Subjects = SubjectList<[Var, Function, CXXRecord]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def WeakImport : InheritableAttr {
let Spellings = [Clang<"weak_import">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def WeakRef : InheritableAttr {
let Args = [StringArgument<"Aliasee", 1>];
let Subjects = SubjectList<[Var, Function], ErrorDiag>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def LTOVisibilityPublic : InheritableAttr {
let ParseKind = "Interrupt";
let HasCustomParsing = 1;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def AnyX86NoCallerSavedRegisters : InheritableAttr,
let Spellings = [Clang<"guarded_var", 0>];
let Subjects = SubjectList<[Field, SharedVar]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def PtGuardedVar : InheritableAttr {
let Spellings = [Clang<"pt_guarded_var", 0>];
let Subjects = SubjectList<[Field, SharedVar]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Lockable : InheritableAttr {
let Spellings = [GNU<"lockable">];
let Subjects = SubjectList<[Record]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
let ASTNode = 0; // Replaced by Capability
}
let Spellings = [Clang<"scoped_lockable", 0>];
let Subjects = SubjectList<[Record]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Capability : InheritableAttr {
let Accessors = [Accessor<"isShared",
[Clang<"shared_capability", 0>]>];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
let AdditionalMembers = [{
bool isMutex() const { return getName().equals_lower("mutex"); }
bool isRole() const { return getName().equals_lower("role"); }
let Accessors = [Accessor<"isShared", [Clang<"requires_shared_capability", 0>,
Clang<"shared_locks_required", 0>]>];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def NoThreadSafetyAnalysis : InheritableAttr {
let Spellings = [Clang<"no_thread_safety_analysis">];
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def GuardedBy : InheritableAttr {
let InheritEvenIfAlreadyPresent = 1;
let Subjects = SubjectList<[Field, SharedVar]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def PtGuardedBy : InheritableAttr {
let InheritEvenIfAlreadyPresent = 1;
let Subjects = SubjectList<[Field, SharedVar]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def AcquiredAfter : InheritableAttr {
let InheritEvenIfAlreadyPresent = 1;
let Subjects = SubjectList<[Field, SharedVar]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def AcquiredBefore : InheritableAttr {
let InheritEvenIfAlreadyPresent = 1;
let Subjects = SubjectList<[Field, SharedVar]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def AssertExclusiveLock : InheritableAttr {
let InheritEvenIfAlreadyPresent = 1;
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def AssertSharedLock : InheritableAttr {
let InheritEvenIfAlreadyPresent = 1;
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
// The first argument is an integer or boolean value specifying the return value
let InheritEvenIfAlreadyPresent = 1;
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
// The first argument is an integer or boolean value specifying the return value
let InheritEvenIfAlreadyPresent = 1;
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def LockReturned : InheritableAttr {
let ParseArgumentsAsUnevaluated = 1;
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def LocksExcluded : InheritableAttr {
let InheritEvenIfAlreadyPresent = 1;
let Subjects = SubjectList<[Function]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
// C/C++ consumed attributes.
let Spellings = [Clang<"consumable_auto_cast_state", 0>];
let Subjects = SubjectList<[CXXRecord]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def ConsumableSetOnRead : InheritableAttr {
let Spellings = [Clang<"consumable_set_state_on_read", 0>];
let Subjects = SubjectList<[CXXRecord]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def CallableWhen : InheritableAttr {
let Spellings = [GCC<"ms_struct">];
let Subjects = SubjectList<[Record]>;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def DLLExport : InheritableAttr, TargetSpecificAttr<TargetWindows> {
def Ptr32 : TypeAttr {
let Spellings = [Keyword<"__ptr32">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def Ptr64 : TypeAttr {
let Spellings = [Keyword<"__ptr64">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def SPtr : TypeAttr {
let Spellings = [Keyword<"__sptr">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def UPtr : TypeAttr {
let Spellings = [Keyword<"__uptr">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def MSInheritance : InheritableAttr {
Mode getVtorDispMode() const { return Mode(vdm); }
}];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def InitSeg : Attr {
let Spellings = [];
let SemaHandler = 0;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def OMPThreadPrivateDecl : InheritableAttr {
let Spellings = [];
let SemaHandler = 0;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def OMPCaptureNoInit : InheritableAttr {
let Spellings = [];
let SemaHandler = 0;
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def OMPCaptureKind : Attr {
let SemaHandler = 0;
let Args = [UnsignedArgument<"CaptureKind">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def OMPReferencedVar : Attr {
let SemaHandler = 0;
let Args = [ExprArgument<"Ref">];
let Documentation = [Undocumented];
+ let PragmaAttributeSupport = 0;
}
def OMPDeclareSimdDecl : Attr {