From 0a8f3afa4e91a7ffdc4a0740f7198aa1d110947b Mon Sep 17 00:00:00 2001 From: Frederic Riss Date: Thu, 18 Sep 2014 09:38:23 +0000 Subject: [PATCH] Always emit DW_AT_declaration attribute when the variable isn't a definition. Summary: This doesn't show up today as we don't emit decalration only variables. This will be tested when the followup patches implementing import of forward declared entities lands in clang. Reviewers: echristo, dblaikie, aprantl Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D5382 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218041 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/AsmPrinter/DwarfUnit.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index 4cd32f8668e..353e70b6e1e 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -1670,6 +1670,9 @@ void DwarfCompileUnit::createGlobalVariableDIE(DIGlobalVariable GV) { DD->addArangeLabel(SymbolCU(this, Sym)); addOpAddress(*Loc, Sym); } + // A static member's declaration is already flagged as such. + if (!SDMDecl.Verify() && !GV.isDefinition()) + addFlag(*VariableDIE, dwarf::DW_AT_declaration); // Do not create specification DIE if context is either compile unit // or a subprogram. if (GVContext && GV.isDefinition() && !GVContext.isCompileUnit() && @@ -1678,9 +1681,6 @@ void DwarfCompileUnit::createGlobalVariableDIE(DIGlobalVariable GV) { VariableSpecDIE = &createAndAddDIE(dwarf::DW_TAG_variable, UnitDie); addDIEEntry(*VariableSpecDIE, dwarf::DW_AT_specification, *VariableDIE); addBlock(*VariableSpecDIE, dwarf::DW_AT_location, Loc); - // A static member's declaration is already flagged as such. - if (!SDMDecl.Verify()) - addFlag(*VariableDIE, dwarf::DW_AT_declaration); } else { addBlock(*VariableDIE, dwarf::DW_AT_location, Loc); }