diff options
author | Artur Pilipenko <apilipenko@azulsystems.com> | 2015-06-01 14:53:55 +0000 |
---|---|---|
committer | Artur Pilipenko <apilipenko@azulsystems.com> | 2015-06-01 14:53:55 +0000 |
commit | a82f8db0b3d022c94dd4f3aa72ecb1eb775dfd7c (patch) | |
tree | ee667a6c18eec3a24fa5eb68b37e1ff6082f6a06 /llvm/lib/IR/MDBuilder.cpp | |
parent | a739a4b3c7bcc0d65dcaac81a4a5d7e2f4b6e6d6 (diff) | |
download | llvm-a82f8db0b3d022c94dd4f3aa72ecb1eb775dfd7c.zip llvm-a82f8db0b3d022c94dd4f3aa72ecb1eb775dfd7c.tar.gz llvm-a82f8db0b3d022c94dd4f3aa72ecb1eb775dfd7c.tar.bz2 |
Add isConstant argument to MDBuilder::createTBAAStructTagNode
According to the TBAA description struct-path tag node can have an optional IsConstant field. Add corresponding argument to MDBuilder::createTBAAStructTagNode.
Reviewed By: hfinkel
Differential Revision: http://reviews.llvm.org/D10160
llvm-svn: 238749
Diffstat (limited to 'llvm/lib/IR/MDBuilder.cpp')
-rw-r--r-- | llvm/lib/IR/MDBuilder.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/llvm/lib/IR/MDBuilder.cpp b/llvm/lib/IR/MDBuilder.cpp index 354592d..b4c5ca7 100644 --- a/llvm/lib/IR/MDBuilder.cpp +++ b/llvm/lib/IR/MDBuilder.cpp @@ -168,9 +168,16 @@ MDNode *MDBuilder::createTBAAScalarTypeNode(StringRef Name, MDNode *Parent, /// \brief Return metadata for a TBAA tag node with the given /// base type, access type and offset relative to the base type. MDNode *MDBuilder::createTBAAStructTagNode(MDNode *BaseType, MDNode *AccessType, - uint64_t Offset) { + uint64_t Offset, bool IsConstant) { Type *Int64 = Type::getInt64Ty(Context); - Metadata *Ops[3] = {BaseType, AccessType, - createConstant(ConstantInt::get(Int64, Offset))}; - return MDNode::get(Context, Ops); + if (IsConstant) { + Metadata *Ops[4] = {BaseType, AccessType, + createConstant(ConstantInt::get(Int64, Offset)), + createConstant(ConstantInt::get(Int64, 1))}; + return MDNode::get(Context, Ops); + } else { + Metadata *Ops[3] = {BaseType, AccessType, + createConstant(ConstantInt::get(Int64, Offset))}; + return MDNode::get(Context, Ops); + } } |