X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FMDBuilder.h;h=c0f0ae67d99f1e9789873b92321c53b865157710;hb=255f89faee13dc491cb64fbeae3c763e7e2ea4e6;hp=add6f2e2f96d7c6afff7da2723958b75607adff5;hpb=0baa4809a8de135a6a7abe9cd78a86f208c99164;p=oota-llvm.git diff --git a/include/llvm/MDBuilder.h b/include/llvm/MDBuilder.h index add6f2e2f96..c0f0ae67d99 100644 --- a/include/llvm/MDBuilder.h +++ b/include/llvm/MDBuilder.h @@ -12,14 +12,14 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_SUPPORT_MDBUILDER_H -#define LLVM_SUPPORT_MDBUILDER_H +#ifndef LLVM_MDBUILDER_H +#define LLVM_MDBUILDER_H +#include "llvm/ADT/APInt.h" #include "llvm/Constants.h" #include "llvm/DerivedTypes.h" #include "llvm/LLVMContext.h" #include "llvm/Metadata.h" -#include "llvm/ADT/APInt.h" namespace llvm { @@ -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