summaryrefslogtreecommitdiffstats
path: root/include/llvm
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2013-01-07 05:51:15 +0000
committerDavid Blaikie <dblaikie@gmail.com>2013-01-07 05:51:15 +0000
commit62fdfb5fa7efdfd61339e4abe6fd87e60e939e58 (patch)
tree8bc041a867c00dad763d611bd16417920b2b45cb /include/llvm
parent71ab7a79a74ebb3dad1aac02c5a5c7c2c20b547f (diff)
downloadexternal_llvm-62fdfb5fa7efdfd61339e4abe6fd87e60e939e58.zip
external_llvm-62fdfb5fa7efdfd61339e4abe6fd87e60e939e58.tar.gz
external_llvm-62fdfb5fa7efdfd61339e4abe6fd87e60e939e58.tar.bz2
PR14759: Debug info support for C++ member pointers.
This works fine with GDB for member variable pointers, but GDB's support for member function pointers seems to be quite unrelated to DW_TAG_ptr_to_member_type. (see GDB bug 14998 for details) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171698 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm')
-rw-r--r--include/llvm/DIBuilder.h5
-rw-r--r--include/llvm/DebugInfo.h5
2 files changed, 10 insertions, 0 deletions
diff --git a/include/llvm/DIBuilder.h b/include/llvm/DIBuilder.h
index f6bc7b1..0a59cdd 100644
--- a/include/llvm/DIBuilder.h
+++ b/include/llvm/DIBuilder.h
@@ -126,6 +126,11 @@ namespace llvm {
uint64_t AlignInBits = 0,
StringRef Name = StringRef());
+ /// \brief Create debugging information entry for a pointer to member.
+ /// @param PointeeTy Type pointed to by this pointer.
+ /// @param Class Type for which this pointer points to members of.
+ DIType createMemberPointerType(DIType PointeeTy, DIType Class);
+
/// createReferenceType - Create debugging information entry for a c++
/// style reference or rvalue reference type.
DIType createReferenceType(unsigned Tag, DIType RTy);
diff --git a/include/llvm/DebugInfo.h b/include/llvm/DebugInfo.h
index 5bfbc63..3b17dc1 100644
--- a/include/llvm/DebugInfo.h
+++ b/include/llvm/DebugInfo.h
@@ -354,6 +354,11 @@ namespace llvm {
/// associated with one.
MDNode *getObjCProperty() const;
+ DIType getClassType() const {
+ assert(getTag() == dwarf::DW_TAG_ptr_to_member_type);
+ return getFieldAs<DIType>(10);
+ }
+
StringRef getObjCPropertyName() const {
if (getVersion() > LLVMDebugVersion11)
return StringRef();