forked from OSchip/llvm-project
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
This commit is contained in:
parent
7fce7e62db
commit
719994b907
|
@ -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() {}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue