Lines Matching full:attribute

1 //===- AttributeImpl.h - Attribute Internals --------------------*- C++ -*-===//
40 /// This class represents a single, uniqued attribute. That attribute
43 unsigned char KindID; ///< Holds the AttrEntryKind of the attribute
73 bool hasAttribute(Attribute::AttrKind A) const;
76 Attribute::AttrKind getKindAsEnum() const;
107 static void Profile(FoldingSetNodeID &ID, Attribute::AttrKind Kind) {
108 assert(Attribute::isEnumAttrKind(Kind) && "Expected enum attribute");
112 static void Profile(FoldingSetNodeID &ID, Attribute::AttrKind Kind,
114 assert(Attribute::isIntAttrKind(Kind) && "Expected int attribute");
124 static void Profile(FoldingSetNodeID &ID, Attribute::AttrKind Kind,
130 static void Profile(FoldingSetNodeID &ID, Attribute::AttrKind Kind,
137 static void Profile(FoldingSetNodeID &ID, Attribute::AttrKind Kind,
154 /// attribute object. There are three main categories: enum attribute entries,
155 /// represented by Attribute::AttrKind; alignment attribute entries; and string
156 /// attribute enties, which are for target-dependent attributes.
159 Attribute::AttrKind Kind;
162 EnumAttributeImpl(AttrEntryKind ID, Attribute::AttrKind Kind)
166 EnumAttributeImpl(Attribute::AttrKind Kind)
168 assert(Kind != Attribute::AttrKind::None &&
169 "Can't create a None attribute!");
172 Attribute::AttrKind getEnumKind() const { return Kind; }
179 IntAttributeImpl(Attribute::AttrKind Kind, uint64_t Val)
181 assert(Attribute::isIntAttrKind(Kind) &&
182 "Wrong kind for int attribute!");
228 TypeAttributeImpl(Attribute::AttrKind Kind, Type *Ty)
238 ConstantRangeAttributeImpl(Attribute::AttrKind Kind, const ConstantRange &CR)
253 ConstantRangeListAttributeImpl(Attribute::AttrKind Kind,
277 /// Bitset with a bit for each available attribute Attribute::AttrKind.
279 static_assert(Attribute::EndAttrKinds <= sizeof(AvailableAttrs) * CHAR_BIT,
283 bool hasAttribute(Attribute::AttrKind Kind) const {
287 void addAttribute(Attribute::AttrKind Kind) {
298 private TrailingObjects<AttributeSetNode, Attribute> {
304 DenseMap<StringRef, Attribute> StringAttrs;
306 AttributeSetNode(ArrayRef<Attribute> Attrs);
309 ArrayRef<Attribute> SortedAttrs);
310 std::optional<Attribute> findEnumAttribute(Attribute::AttrKind Kind) const;
321 static AttributeSetNode *get(LLVMContext &C, ArrayRef<Attribute> Attrs);
326 bool hasAttribute(Attribute::AttrKind Kind) const {
332 Attribute getAttribute(Attribute::AttrKind Kind) const;
333 Attribute getAttribute(StringRef Kind) const;
348 Type *getAttributeType(Attribute::AttrKind Kind) const;
350 using iterator = const Attribute *;
352 iterator begin() const { return getTrailingObjects<Attribute>(); }
359 static void Profile(FoldingSetNodeID &ID, ArrayRef<Attribute> AttrList) {
393 /// enum attribute of the given kind.
394 bool hasFnAttribute(Attribute::AttrKind Kind) const {
398 /// Return true if the specified attribute is set for at least one
400 /// of a parameter with the specified attribute is provided.
401 bool hasAttrSomewhere(Attribute::AttrKind Kind,