diff --git a/include/llvm/IR/DebugInfo.h b/include/llvm/IR/DebugInfo.h index 6fcf1ee65cd..d467b5abe0e 100644 --- a/include/llvm/IR/DebugInfo.h +++ b/include/llvm/IR/DebugInfo.h @@ -350,10 +350,7 @@ public: MDCompositeTypeBase *operator->() const { return get(); } MDCompositeTypeBase &operator*() const { return *get(); } - DIArray getElements() const { - assert(!isa(*this) && "no elements for DISubroutineType"); - return DIArray(get()->getElements()); - } + DIArray getElements() const { return get()->getElements(); } unsigned getRunTimeLang() const { return get()->getRuntimeLang(); } DITypeRef getContainingType() const { return get()->getVTableHolder(); } diff --git a/include/llvm/IR/DebugInfoMetadata.h b/include/llvm/IR/DebugInfoMetadata.h index 48fc8bbb951..9e6117c9521 100644 --- a/include/llvm/IR/DebugInfoMetadata.h +++ b/include/llvm/IR/DebugInfoMetadata.h @@ -786,7 +786,13 @@ protected: ~MDCompositeTypeBase() = default; public: + /// \brief Get the elements of the composite type. + /// + /// \note Calling this is only valid for \a MDCompositeType. This assertion + /// can be removed once \a MDSubroutineType has been separated from + /// "composite types". DebugNodeArray getElements() const { + assert(!isa(this) && "no elements for DISubroutineType"); return cast_or_null(getRawElements()); } MDTypeRef getVTableHolder() const { return MDTypeRef(getRawVTableHolder()); }