diff options
Diffstat (limited to 'llvm/lib/IR/DebugInfoMetadata.cpp')
-rw-r--r-- | llvm/lib/IR/DebugInfoMetadata.cpp | 45 |
1 files changed, 9 insertions, 36 deletions
diff --git a/llvm/lib/IR/DebugInfoMetadata.cpp b/llvm/lib/IR/DebugInfoMetadata.cpp index 75c397e1345..fe61c279778 100644 --- a/llvm/lib/IR/DebugInfoMetadata.cpp +++ b/llvm/lib/IR/DebugInfoMetadata.cpp @@ -514,17 +514,18 @@ DIGlobalVariable * DIGlobalVariable::getImpl(LLVMContext &Context, Metadata *Scope, MDString *Name, MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type, bool IsLocalToUnit, bool IsDefinition, + Metadata *Variable, Metadata *StaticDataMemberDeclaration, - uint32_t AlignInBits, StorageType Storage, - bool ShouldCreate) { + uint32_t AlignInBits, + StorageType Storage, bool ShouldCreate) { assert(isCanonical(Name) && "Expected canonical MDString"); assert(isCanonical(LinkageName) && "Expected canonical MDString"); DEFINE_GETIMPL_LOOKUP(DIGlobalVariable, (Scope, Name, LinkageName, File, Line, Type, - IsLocalToUnit, IsDefinition, + IsLocalToUnit, IsDefinition, Variable, StaticDataMemberDeclaration, AlignInBits)); - Metadata *Ops[] = { - Scope, Name, File, Type, Name, LinkageName, StaticDataMemberDeclaration}; + Metadata *Ops[] = {Scope, Name, File, Type, + Name, LinkageName, Variable, StaticDataMemberDeclaration}; DEFINE_GETIMPL_STORE(DIGlobalVariable, (Line, IsLocalToUnit, IsDefinition, AlignInBits), Ops); @@ -580,17 +581,10 @@ bool DIExpression::isValid() const { default: return false; case dwarf::DW_OP_LLVM_fragment: - // A fragment operator must appear at the end. + case dwarf::DW_OP_stack_value: + // We only support fragment and stack value expressions which appear at + // the end. return I->get() + I->getSize() == E->get(); - case dwarf::DW_OP_stack_value: { - // Must be the last one or followed by a DW_OP_LLVM_fragment. - if (I->get() + I->getSize() == E->get()) - break; - auto J = I; - if ((++J)->getOp() != dwarf::DW_OP_LLVM_fragment) - return false; - break; - } case dwarf::DW_OP_constu: case dwarf::DW_OP_plus: case dwarf::DW_OP_minus: @@ -619,27 +613,6 @@ uint64_t DIExpression::getFragmentSizeInBits() const { return getElement(getNumElements() - 1); } -bool DIExpression::isConstant() const { - // Recognize DW_OP_constu C DW_OP_stack_value (DW_OP_LLVM_fragment Len Ofs)?. - if (getNumElements() != 3 && getNumElements() != 6) - return false; - if (getElement(0) != dwarf::DW_OP_constu || - getElement(2) != dwarf::DW_OP_stack_value) - return false; - if (getNumElements() == 6 && getElement(3) != dwarf::DW_OP_LLVM_fragment) - return false; - return true; -} - -DIGlobalVariableExpression * -DIGlobalVariableExpression::getImpl(LLVMContext &Context, Metadata *Variable, - Metadata *Expression, StorageType Storage, - bool ShouldCreate) { - DEFINE_GETIMPL_LOOKUP(DIGlobalVariableExpression, (Variable, Expression)); - Metadata *Ops[] = {Variable, Expression}; - DEFINE_GETIMPL_STORE_NO_CONSTRUCTOR_ARGS(DIGlobalVariableExpression, Ops); -} - DIObjCProperty *DIObjCProperty::getImpl( LLVMContext &Context, MDString *Name, Metadata *File, unsigned Line, MDString *GetterName, MDString *SetterName, unsigned Attributes, |