X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FMDBuilder.h;h=1867a639236e39bed5a24d0f66bb174dad4a52be;hb=79b319d35589ffe9c00a5e112a79ad20ea78c4d5;hp=add6f2e2f96d7c6afff7da2723958b75607adff5;hpb=0baa4809a8de135a6a7abe9cd78a86f208c99164;p=oota-llvm.git diff --git a/include/llvm/MDBuilder.h b/include/llvm/MDBuilder.h index add6f2e2f96..1867a639236 100644 --- a/include/llvm/MDBuilder.h +++ b/include/llvm/MDBuilder.h @@ -12,8 +12,8 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_SUPPORT_MDBUILDER_H -#define LLVM_SUPPORT_MDBUILDER_H +#ifndef LLVM_MDBUILDER_H +#define LLVM_MDBUILDER_H #include "llvm/Constants.h" #include "llvm/DerivedTypes.h" @@ -134,6 +134,27 @@ namespace llvm { } } + 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) {} + }; + + /// \brief Return metadata for a tbaa.struct node with the given + /// struct field descriptions. + MDNode *createTBAAStructNode(ArrayRef Fields) { + SmallVector Vals(Fields.size() * 3); + Type *Int64 = IntegerType::get(Context, 64); + for (unsigned i = 0, e = Fields.size(); i != e; ++i) { + Vals[i * 3 + 0] = ConstantInt::get(Int64, Fields[i].Offset); + Vals[i * 3 + 1] = ConstantInt::get(Int64, Fields[i].Size); + Vals[i * 3 + 2] = Fields[i].TBAA; + } + return MDNode::get(Context, Vals); + } + }; } // end namespace llvm