This does the is_cu_die->is_unit_die change and also removes the stale comment I forgot to delete when moving the guarded condition.
Bootstrapped & tested on x86_64-unknown-linux-gnu, applied. Richard. 2018-06-28 Richard Biener <rguent...@suse.de> * dwarf2out.c (gen_subprogram_die): Use is_unit_die when deciding whether to not re-use a DIE. Index: gcc/dwarf2out.c =================================================================== --- gcc/dwarf2out.c (revision 262215) +++ gcc/dwarf2out.c (working copy) @@ -22780,7 +22780,7 @@ gen_subprogram_die (tree decl, dw_die_re apply; we just use the old DIE. */ expanded_location s = expand_location (DECL_SOURCE_LOCATION (decl)); struct dwarf_file_data * file_index = lookup_filename (s.file); - if (((is_cu_die (old_die->die_parent) + if (((is_unit_die (old_die->die_parent) /* This condition fixes the inconsistency/ICE with the following Fortran test (or some derivative thereof) while building libgfortran: @@ -22796,9 +22796,6 @@ gen_subprogram_die (tree decl, dw_die_re && old_die->die_parent->die_tag == DW_TAG_module) || context_die == NULL) && (DECL_ARTIFICIAL (decl) - /* The location attributes may be in the abstract origin - which in the case of LTO might be not available to - look at. */ || (get_AT_file (old_die, DW_AT_decl_file) == file_index && (get_AT_unsigned (old_die, DW_AT_decl_line) == (unsigned) s.line)