https://bugs.llvm.org/show_bug.cgi?id=40279

            Bug ID: 40279
           Summary: Incorrect scope information for a struct in DWARF
                    debug information
           Product: clang
           Version: 7.0
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: -New Bugs
          Assignee: unassignedclangb...@nondot.org
          Reporter: mbar...@runbox.com
                CC: htmldevelo...@gmail.com, llvm-bugs@lists.llvm.org,
                    neeil...@live.com, richard-l...@metafoo.co.uk

Created attachment 21309
  --> https://bugs.llvm.org/attachment.cgi?id=21309&action=edit
Source file containing incorrectly scoped struct

I was building Chrome with -g2 and trying to rebuild the class hierarchy graph
and came across this:

According to DWARF information, "__cxxabiv1::(anonymous
namespace)::scan_results" is being treated as "(anonymous
namespace)::scan_results".

Unfortunately I'm unsure how to reproduce, but here is what I ran into.

Relavant part from cxa_personality.cpp (full file attached):
namespace __cxxabiv1
{
extern "C"
{
namespace
{
struct scan_results
{
    // [A bunch of fields]
};
}
}
}
}

This is contained (file is too large to attach) when disassembling the
generated BC file:
!13342 = !DINamespace(scope: null)
!227745 = distinct !DICompositeType(tag: DW_TAG_structure_type, name:
"scan_results", scope: !13342, file: !16882, line: 503, size: 384, flags:
DIFlagTypePassByValue, elements: !227746)

So !13342 does not point to the scope it's contained in.

The struct itself is known elsewhere by it's fullname, e.g.
%"struct.__cxxabiv1::(anonymous namespace)::scan_results" = type { i64, i8*,
i8*, i64, i8*, i32 }

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to