diff options
Diffstat (limited to 'include/llvm/IR/MDBuilder.h')
| -rw-r--r-- | include/llvm/IR/MDBuilder.h | 32 | 
1 files changed, 29 insertions, 3 deletions
| diff --git a/include/llvm/IR/MDBuilder.h b/include/llvm/IR/MDBuilder.h index 899976a87bc7..dff1ca12407f 100644 --- a/include/llvm/IR/MDBuilder.h +++ b/include/llvm/IR/MDBuilder.h @@ -30,6 +30,7 @@ class Constant;  class ConstantAsMetadata;  class MDNode;  class MDString; +class Metadata;  class MDBuilder {    LLVMContext &Context; @@ -85,6 +86,14 @@ public:    MDNode *createRange(Constant *Lo, Constant *Hi);    //===------------------------------------------------------------------===// +  // Callees metadata. +  //===------------------------------------------------------------------===// + +  /// \brief Return metadata indicating the possible callees of indirect +  /// calls. +  MDNode *createCallees(ArrayRef<Function *> Callees); + +  //===------------------------------------------------------------------===//    // AA metadata.    //===------------------------------------------------------------------===// @@ -141,9 +150,9 @@ public:    struct TBAAStructField {      uint64_t Offset;      uint64_t Size; -    MDNode *TBAA; -    TBAAStructField(uint64_t Offset, uint64_t Size, MDNode *TBAA) : -      Offset(Offset), Size(Size), TBAA(TBAA) {} +    MDNode *Type; +    TBAAStructField(uint64_t Offset, uint64_t Size, MDNode *Type) : +      Offset(Offset), Size(Size), Type(Type) {}    };    /// \brief Return metadata for a tbaa.struct node with the given @@ -165,6 +174,23 @@ public:    /// base type, access type and offset relative to the base type.    MDNode *createTBAAStructTagNode(MDNode *BaseType, MDNode *AccessType,                                    uint64_t Offset, bool IsConstant = false); + +  /// \brief Return metadata for a TBAA type node in the TBAA type DAG with the +  /// given parent type, size in bytes, type identifier and a list of fields. +  MDNode *createTBAATypeNode(MDNode *Parent, uint64_t Size, Metadata *Id, +                             ArrayRef<TBAAStructField> Fields = +                                 ArrayRef<TBAAStructField>()); + +  /// \brief Return metadata for a TBAA access tag with the given base type, +  /// final access type, offset of the access relative to the base type, size of +  /// the access and flag indicating whether the accessed object can be +  /// considered immutable for the purposes of the TBAA analysis. +  MDNode *createTBAAAccessTag(MDNode *BaseType, MDNode *AccessType, +                              uint64_t Offset, uint64_t Size, +                              bool IsImmutable = false); + +  /// \brief Return metadata containing an irreducible loop header weight. +  MDNode *createIrrLoopHeaderWeight(uint64_t Weight);  };  } // end namespace llvm | 
