diff options
| -rw-r--r-- | llvm/include/llvm/IR/DebugInfo.h | 13 | ||||
| -rw-r--r-- | llvm/include/llvm/IR/DebugInfoMetadata.h | 17 |
2 files changed, 20 insertions, 10 deletions
diff --git a/llvm/include/llvm/IR/DebugInfo.h b/llvm/include/llvm/IR/DebugInfo.h index 1f515324757..dfeaee8b303 100644 --- a/llvm/include/llvm/IR/DebugInfo.h +++ b/llvm/include/llvm/IR/DebugInfo.h @@ -315,22 +315,15 @@ public: /// \brief Return property node, if this ivar is associated with one. MDObjCProperty *getObjCProperty() const { - return dyn_cast_or_null<MDObjCProperty>( - cast<MDDerivedType>(get())->getExtraData()); + return cast<MDDerivedType>(get())->getObjCProperty(); } DITypeRef getClassType() const { - assert(getTag() == dwarf::DW_TAG_ptr_to_member_type); - return MDTypeRef(cast<MDDerivedType>(get())->getExtraData()); + return cast<MDDerivedType>(get())->getClassType(); } Constant *getConstant() const { - assert(getTag() == dwarf::DW_TAG_member && isStaticMember()); - if (auto *C = cast_or_null<ConstantAsMetadata>( - cast<MDDerivedType>(get())->getExtraData())) - return C->getValue(); - - return nullptr; + return cast<MDDerivedType>(get())->getConstant(); } }; diff --git a/llvm/include/llvm/IR/DebugInfoMetadata.h b/llvm/include/llvm/IR/DebugInfoMetadata.h index 3d2ae12f9be..f7b092f4e6e 100644 --- a/llvm/include/llvm/IR/DebugInfoMetadata.h +++ b/llvm/include/llvm/IR/DebugInfoMetadata.h @@ -746,6 +746,23 @@ public: Metadata *getExtraData() const { return getRawExtraData(); } Metadata *getRawExtraData() const { return getOperand(4); } + /// \brief Get casted version of extra data. + /// @{ + MDTypeRef getClassType() const { + assert(getTag() == dwarf::DW_TAG_ptr_to_member_type); + return MDTypeRef(getExtraData()); + } + MDObjCProperty *getObjCProperty() const { + return dyn_cast_or_null<MDObjCProperty>(getExtraData()); + } + Constant *getConstant() const { + assert(getTag() == dwarf::DW_TAG_member && isStaticMember()); + if (auto *C = cast_or_null<ConstantAsMetadata>(getExtraData())) + return C->getValue(); + return nullptr; + } + /// @} + static bool classof(const Metadata *MD) { return MD->getMetadataID() == MDDerivedTypeKind; } |

