This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug debug/66468] [6 Regression] ICE in in check_die, at dwarf2out.c:5719
- From: "aldyh at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 09 Jun 2015 14:37:57 +0000
- Subject: [Bug debug/66468] [6 Regression] ICE in in check_die, at dwarf2out.c:5719
- Auto-submitted: auto-generated
- References: <bug-66468-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66468
Aldy Hernandez <aldyh at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jason at gcc dot gnu.org
--- Comment #5 from Aldy Hernandez <aldyh at gcc dot gnu.org> ---
Jason, this behavior exists prior to the debug-early work.
For the 1.ii/2.ii testcase in comment 4 we are generating a DIE for a
__base_dtor. First we retrofit the declaration with force_decl_die,
and use this DIE as the basis for a DW_AT_specification variant.
Eventually dwarf2out_abstract_function() gets called on this
DW_AT_specification variant and we annotate it with DW_AT_inline.
This DW_AT_specification variant, already has location info which is
why we fail the assert.
It was my understanding that DW_AT_inline cannot appear in conjunction
with location info.
I added the check_die() code to a branch of mainline immediately
before my work, and it ICEs similarly to current mainline with a
problematic DIE of:
DIE 0: DW_TAG_subprogram (0x7ffff03885a0)
abbrev id: 0 offset: 0 mark: 0
DW_AT_specification: die -> 0 (0x7ffff03884b0)
DW_AT_low_pc: label: *.LFB0
DW_AT_high_pc: label: *.LFE0
DW_AT_frame_base: location descriptor:
(0x7ffff03885f0) DW_OP_call_frame_cfa 0, 0
DW_AT_GNU_all_call_sites: 1
DW_AT_inline: 2
Could you please take a look at this, since it is broken behavior
prior to early debug? Perhaps it is expected behavior and we can
remove the DW_AT_inline + location check?