aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/IR/MDBuilder.cpp
diff options
context:
space:
mode:
authorArtur Pilipenko <apilipenko@azulsystems.com>2015-06-01 14:53:55 +0000
committerArtur Pilipenko <apilipenko@azulsystems.com>2015-06-01 14:53:55 +0000
commita82f8db0b3d022c94dd4f3aa72ecb1eb775dfd7c (patch)
treeee667a6c18eec3a24fa5eb68b37e1ff6082f6a06 /llvm/lib/IR/MDBuilder.cpp
parenta739a4b3c7bcc0d65dcaac81a4a5d7e2f4b6e6d6 (diff)
downloadllvm-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.cpp15
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);
+ }
}