summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2014-01-31 19:52:26 +0000
committerDavid Blaikie <dblaikie@gmail.com>2014-01-31 19:52:26 +0000
commit322d79b4a259bca244c39857b76db491bc0c8803 (patch)
treea6ab093ce5ba09d1c8c6b65ff548e4f00bf58985 /llvm/lib/CodeGen
parent12fb89ec519371bcf3024c9b50a7338f6cb91e88 (diff)
downloadbcm5719-llvm-322d79b4a259bca244c39857b76db491bc0c8803.tar.gz
bcm5719-llvm-322d79b4a259bca244c39857b76db491bc0c8803.zip
DebugInfo: Flag type unit references as declarations
This ensures DWARF consumers don't confuse these references for definitions. I'd argue it might be nice to improve debuggers so we don't need this, but it's just one field in an abbreviation anyway - so it doesn't seem worth the fight. llvm-svn: 200569
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index e4188c39b07..24beebbd35a 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -3016,6 +3016,11 @@ void DwarfDebug::emitDebugStrDWO() {
void DwarfDebug::addDwarfTypeUnitType(DICompileUnit CUNode,
StringRef Identifier, DIE *RefDie,
DICompositeType CTy) {
+ // Flag the type unit reference as a declaration so that if it contains
+ // members (implicit special members, static data member definitions, member
+ // declarations for definitions in this CU, etc) consumers don't get confused
+ // and think this is a full definition.
+ CUMap.begin()->second->addFlag(RefDie, dwarf::DW_AT_declaration);
const DwarfTypeUnit *&TU = DwarfTypeUnits[CTy];
if (TU) {
OpenPOWER on IntegriCloud