https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81936
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2017-08-24
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot
gnu.org
Ever confirmed|0 |1
--- Comment #16 from Richard Biener <rguenth at gcc dot gnu.org> ---
Ok, I think this isn't really offloading specific. We emit locations with
DW_OP_GNU_variable_value optimistically as dw_val_class_decl_ref and later
either resolve those to a dw_val_class_die_ref or drop them
(resolve_addr_in_expr).
For early LTO we have the machinery in note_variable_value_in_expr to
workaround this early (until we find a better way).
Ah...
static void
note_variable_value_in_expr (dw_die_ref die, dw_loc_descr_ref loc)
{
for (; loc; loc = loc->dw_loc_next)
if (loc->dw_loc_opc == DW_OP_GNU_variable_value
&& loc->dw_loc_oprnd1.val_class == dw_val_class_decl_ref)
{
tree decl = loc->dw_loc_oprnd1.v.val_decl_ref;
dw_die_ref ref = lookup_decl_die (decl);
if (! ref && flag_generate_lto)
{
|| flag_generate_offload missing...
and we run into:
> ./cc1 -quiet pr66714.c -fopenmp -g
pr66714.c:17:1: internal compiler error: in calc_die_sizes, at dwarf2out.c:9131
}
^
0xa4c29f calc_die_sizes
/tmp/trunk2/gcc/dwarf2out.c:9130
0xa4c2f9 calc_die_sizes
/tmp/trunk2/gcc/dwarf2out.c:9135
0xa4f31c output_comp_unit
/tmp/trunk2/gcc/dwarf2out.c:10432
0xa81c71 dwarf2out_finish
/tmp/trunk2/gcc/dwarf2out.c:30022
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
more flag_generate-offload missing.