/// \class
/// \brief This class represents a single, uniqued attribute. That attribute
/// could be a single enum, a tuple, or a string.
-class LLVM_LIBRARY_VISIBILITY AttributeImpl : public FoldingSetNode {
+class AttributeImpl : public FoldingSetNode {
unsigned char KindID; ///< Holds the AttrEntryKind of the attribute
// AttributesImpl is uniqued, these should not be publicly available.
/// represented by Attribute::AttrKind; alignment attribute entries; and string
/// attribute enties, which are for target-dependent attributes.
-class LLVM_LIBRARY_VISIBILITY EnumAttributeImpl : public AttributeImpl {
+class EnumAttributeImpl : public AttributeImpl {
+ virtual void anchor();
Attribute::AttrKind Kind;
protected:
Attribute::AttrKind getEnumKind() const { return Kind; }
};
-class LLVM_LIBRARY_VISIBILITY AlignAttributeImpl : public EnumAttributeImpl {
+class AlignAttributeImpl : public EnumAttributeImpl {
+ virtual void anchor();
unsigned Align;
public:
unsigned getAlignment() const { return Align; }
};
-class LLVM_LIBRARY_VISIBILITY StringAttributeImpl : public AttributeImpl {
+class StringAttributeImpl : public AttributeImpl {
+ virtual void anchor();
std::string Kind;
std::string Val;
/// \class
/// \brief This class represents a group of attributes that apply to one
/// element: function, return type, or parameter.
-class LLVM_LIBRARY_VISIBILITY AttributeSetNode : public FoldingSetNode {
+class AttributeSetNode : public FoldingSetNode {
unsigned NumAttrs; ///< Number of attributes in this node.
AttributeSetNode(ArrayRef<Attribute> Attrs) : NumAttrs(Attrs.size()) {
/// \class
/// \brief This class represents a set of attributes that apply to the function,
/// return type, and parameters.
-class LLVM_LIBRARY_VISIBILITY AttributeSetImpl : public FoldingSetNode {
+class AttributeSetImpl : public FoldingSetNode {
friend class AttributeSet;
LLVMContext &Context;