[Bug lto/86321] [9 Regression] ICE: in splice_child_die, at dwarf2out.c:5693 for several Fortran tests with -g -flto
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Jun 28 08:55:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86321
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
The following fixes this. Dominique, can you include that in your next testing
to see if that fixes all of the new fails?
Index: gcc/fortran/trans-types.c
===================================================================
--- gcc/fortran/trans-types.c (revision 262132)
+++ gcc/fortran/trans-types.c (working copy)
@@ -1923,6 +1923,14 @@ gfc_get_array_type_bounds (tree etype, i
base_type = gfc_get_array_descriptor_base (dimen, codimen, restricted);
fat_type = build_distinct_type_copy (base_type);
+ /* Unshare TYPE_FIELDs. */
+ for (tree *tp = &TYPE_FIELDS (fat_type); *tp; tp = &DECL_CHAIN (*tp))
+ {
+ tree next = DECL_CHAIN (*tp);
+ *tp = copy_node (*tp);
+ DECL_CONTEXT (*tp) = fat_type;
+ DECL_CHAIN (*tp) = next;
+ }
/* Make sure that nontarget and target array type have the same canonical
type (and same stub decl for debug info). */
base_type = gfc_get_array_descriptor_base (dimen, codimen, false);
More information about the Gcc-bugs
mailing list