diff options
| author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-03-17 21:32:46 +0000 |
|---|---|---|
| committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-03-17 21:32:46 +0000 |
| commit | 719994b90739c3665e05e625b1bbbd2aa2190fea (patch) | |
| tree | 85576404936dd304d8a6c42b65fb8bce3a1cd007 | |
| parent | 7fce7e62db29e3b3e2ed32cc1997aafb2f57781e (diff) | |
| download | bcm5719-llvm-719994b90739c3665e05e625b1bbbd2aa2190fea.tar.gz bcm5719-llvm-719994b90739c3665e05e625b1bbbd2aa2190fea.zip | |
DebugInfo: Drop fake DW_TAG_expression
Break MDExpression off of DebugNode (inherit directly from `MDNode`) and
drop the fake `DW_TAG_expression` tag in the process.
AFAICT, there's no real functionality change here. The tag was
originally used by `DIDescriptor::isExpression()` to discriminate
between `MDNode`s, but in the new hierarchy we don't need that.
Fixes PR22780.
llvm-svn: 232550
| -rw-r--r-- | llvm/include/llvm/IR/DebugInfoMetadata.h | 6 | ||||
| -rw-r--r-- | llvm/include/llvm/IR/Metadata.def | 2 | ||||
| -rw-r--r-- | llvm/include/llvm/Support/Dwarf.def | 1 | ||||
| -rw-r--r-- | llvm/lib/IR/Verifier.cpp | 1 |
4 files changed, 3 insertions, 7 deletions
diff --git a/llvm/include/llvm/IR/DebugInfoMetadata.h b/llvm/include/llvm/IR/DebugInfoMetadata.h index c09b7d0477d..5bf1d01a8dd 100644 --- a/llvm/include/llvm/IR/DebugInfoMetadata.h +++ b/llvm/include/llvm/IR/DebugInfoMetadata.h @@ -146,7 +146,6 @@ public: case MDTemplateValueParameterKind: case MDGlobalVariableKind: case MDLocalVariableKind: - case MDExpressionKind: case MDObjCPropertyKind: case MDImportedEntityKind: return true; @@ -1447,17 +1446,16 @@ public: /// \brief DWARF expression. /// /// TODO: Co-allocate the expression elements. -/// TODO: Drop fake DW_TAG_expression and separate from DebugNode. /// TODO: Separate from MDNode, or otherwise drop Distinct and Temporary /// storage types. -class MDExpression : public DebugNode { +class MDExpression : public MDNode { friend class LLVMContextImpl; friend class MDNode; std::vector<uint64_t> Elements; MDExpression(LLVMContext &C, StorageType Storage, ArrayRef<uint64_t> Elements) - : DebugNode(C, MDExpressionKind, Storage, dwarf::DW_TAG_expression, None), + : MDNode(C, MDExpressionKind, Storage, None), Elements(Elements.begin(), Elements.end()) {} ~MDExpression() {} diff --git a/llvm/include/llvm/IR/Metadata.def b/llvm/include/llvm/IR/Metadata.def index 66589e0a709..fa4274b1631 100644 --- a/llvm/include/llvm/IR/Metadata.def +++ b/llvm/include/llvm/IR/Metadata.def @@ -61,6 +61,7 @@ HANDLE_METADATA_LEAF(LocalAsMetadata) HANDLE_MDNODE_BRANCH(MDNode) HANDLE_MDNODE_LEAF(MDTuple) HANDLE_SPECIALIZED_MDNODE_LEAF(MDLocation) +HANDLE_SPECIALIZED_MDNODE_LEAF(MDExpression) HANDLE_SPECIALIZED_MDNODE_BRANCH(DebugNode) HANDLE_SPECIALIZED_MDNODE_LEAF(GenericDebugNode) HANDLE_SPECIALIZED_MDNODE_LEAF(MDSubrange) @@ -86,7 +87,6 @@ HANDLE_SPECIALIZED_MDNODE_LEAF(MDTemplateValueParameter) HANDLE_SPECIALIZED_MDNODE_BRANCH(MDVariable) HANDLE_SPECIALIZED_MDNODE_LEAF(MDGlobalVariable) HANDLE_SPECIALIZED_MDNODE_LEAF(MDLocalVariable) -HANDLE_SPECIALIZED_MDNODE_LEAF(MDExpression) HANDLE_SPECIALIZED_MDNODE_LEAF(MDObjCProperty) HANDLE_SPECIALIZED_MDNODE_LEAF(MDImportedEntity) diff --git a/llvm/include/llvm/Support/Dwarf.def b/llvm/include/llvm/Support/Dwarf.def index c663af94472..4b923b897e6 100644 --- a/llvm/include/llvm/Support/Dwarf.def +++ b/llvm/include/llvm/Support/Dwarf.def @@ -102,7 +102,6 @@ HANDLE_DW_TAG(0x0043, template_alias) // Mock tags we use as discriminators. HANDLE_DW_TAG(0x0100, auto_variable) // Tag for local (auto) variables. HANDLE_DW_TAG(0x0101, arg_variable) // Tag for argument variables. -HANDLE_DW_TAG(0x0102, expression) // Tag for complex address expressions. // New in DWARF v5. HANDLE_DW_TAG(0x0044, coarray_type) diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index b2711a439b6..219a7aa16a4 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -754,7 +754,6 @@ void Verifier::visitMDLocalVariable(const MDLocalVariable &N) { } void Verifier::visitMDExpression(const MDExpression &N) { - Assert(N.getTag() == dwarf::DW_TAG_expression, "invalid tag", &N); Assert(N.isValid(), "invalid expression", &N); } |

