diff options
author | Reid Kleckner <rnk@google.com> | 2016-06-17 21:31:33 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2016-06-17 21:31:33 +0000 |
commit | 604105bb905692b66b07683a73df7ad7786626dc (patch) | |
tree | b3c6c250360612deca57453ab9ce380558a5b394 /llvm/lib/IR/DebugInfoMetadata.cpp | |
parent | 3739b95d4dd9e565ddaaff77d613a9269175e55e (diff) | |
download | bcm5719-llvm-604105bb905692b66b07683a73df7ad7786626dc.tar.gz bcm5719-llvm-604105bb905692b66b07683a73df7ad7786626dc.zip |
[codeview] Add DIFlags for pointer to member representations
Summary:
This seems like the least intrusive way to pass this information
through.
Fixes PR28151
Reviewers: majnemer, aprantl, dblaikie
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D21444
llvm-svn: 273053
Diffstat (limited to 'llvm/lib/IR/DebugInfoMetadata.cpp')
-rw-r--r-- | llvm/lib/IR/DebugInfoMetadata.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/IR/DebugInfoMetadata.cpp b/llvm/lib/IR/DebugInfoMetadata.cpp index 4cbe838f87d..ea4ebf088c1 100644 --- a/llvm/lib/IR/DebugInfoMetadata.cpp +++ b/llvm/lib/IR/DebugInfoMetadata.cpp @@ -85,8 +85,8 @@ const char *DINode::getFlagString(unsigned Flag) { unsigned DINode::splitFlags(unsigned Flags, SmallVectorImpl<unsigned> &SplitFlags) { - // Accessibility flags need to be specially handled, since they're packed - // together. + // Accessibility and member pointer flags need to be specially handled, since + // they're packed together. if (unsigned A = Flags & FlagAccessibility) { if (A == FlagPrivate) SplitFlags.push_back(FlagPrivate); @@ -96,6 +96,15 @@ unsigned DINode::splitFlags(unsigned Flags, SplitFlags.push_back(FlagPublic); Flags &= ~A; } + if (unsigned R = Flags & FlagPtrToMemberRep) { + if (R == FlagSingleInheritance) + SplitFlags.push_back(FlagSingleInheritance); + else if (R == FlagMultipleInheritance) + SplitFlags.push_back(FlagMultipleInheritance); + else + SplitFlags.push_back(FlagVirtualInheritance); + Flags &= ~R; + } #define HANDLE_DI_FLAG(ID, NAME) \ if (unsigned Bit = Flags & ID) { \ |