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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200569 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Blaikie 2014-01-31 19:52:26 +00:00
parent 4fa3492f97
commit 0451736fc9
2 changed files with 7 additions and 0 deletions

View File

@ -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) {

View File

@ -51,8 +51,10 @@
; CHECK: Compile Unit: length = [[CU_SIZE:[0-9a-f]+]]
; CHECK: DW_TAG_structure_type
; CHECK-NEXT: DW_AT_declaration
; CHECK-NEXT: DW_AT_signature
; CHECK: DW_TAG_class_type
; CHECK-NEXT: DW_AT_declaration
; CHECK-NEXT: DW_AT_signature
; Ensure the CU-local type 'walrus' is not placed in a type unit.