diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-05-27 19:34:32 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-05-27 19:34:32 +0000 |
commit | b85f0080e7c8188a998fb08b05944572f7b39b9e (patch) | |
tree | eb8e666e9f9e5419daa5cea1761ecc392ec0988f /llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp | |
parent | 1575cb49cd87b8abf87ae5a866c2a3f49abf9158 (diff) | |
download | bcm5719-llvm-b85f0080e7c8188a998fb08b05944572f7b39b9e.tar.gz bcm5719-llvm-b85f0080e7c8188a998fb08b05944572f7b39b9e.zip |
DebugInfo: Simplify solution to avoid DW_AT_artificial on inlined parameters.
Originally committed in r207717, I clearly didn't look very closely at
the code to understand how existing things were working...
llvm-svn: 209680
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index 2707f8b73d8..4bf0b187847 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -1769,34 +1769,30 @@ void DwarfUnit::constructContainingTypeDIEs() { /// constructVariableDIE - Construct a DIE for the given DbgVariable. std::unique_ptr<DIE> DwarfUnit::constructVariableDIE(DbgVariable &DV, - AbstractOrInlined AbsIn) { - auto D = constructVariableDIEImpl(DV, AbsIn); + bool Abstract) { + auto D = constructVariableDIEImpl(DV, Abstract); DV.setDIE(*D); return D; } -std::unique_ptr<DIE> -DwarfUnit::constructVariableDIEImpl(const DbgVariable &DV, - AbstractOrInlined AbsIn) { +std::unique_ptr<DIE> DwarfUnit::constructVariableDIEImpl(const DbgVariable &DV, + bool Abstract) { StringRef Name = DV.getName(); // Define variable debug information entry. auto VariableDie = make_unique<DIE>(DV.getTag()); - DbgVariable *AbsVar = DV.getAbstractVariable(); - DIE *AbsDIE = AbsVar ? AbsVar->getDIE() : nullptr; - if (AbsDIE) - addDIEEntry(*VariableDie, dwarf::DW_AT_abstract_origin, *AbsDIE); + if (DbgVariable *AbsVar = DV.getAbstractVariable()) + addDIEEntry(*VariableDie, dwarf::DW_AT_abstract_origin, *AbsVar->getDIE()); else { if (!Name.empty()) addString(*VariableDie, dwarf::DW_AT_name, Name); addSourceLine(*VariableDie, DV.getVariable()); addType(*VariableDie, DV.getType()); + if (DV.isArtificial()) + addFlag(*VariableDie, dwarf::DW_AT_artificial); } - if (AbsIn != AOI_Inlined && DV.isArtificial()) - addFlag(*VariableDie, dwarf::DW_AT_artificial); - - if (AbsIn == AOI_Abstract) + if (Abstract) return VariableDie; // Add variable address. |