https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93792
--- Comment #2 from kargl at gcc dot gnu.org --- (In reply to kargl from comment #1) > This patch is against svn r280157. The patch fixes the ICE. > Someone will need to convert the example code into a test > for the testsuite. > > It seems PDT are handled differently than other components in > a user-defined derived type. > > Index: gcc/fortran/decl.c > =================================================================== > --- gcc/fortran/decl.c (revision 280157) > +++ gcc/fortran/decl.c (working copy) > @@ -2913,7 +2913,16 @@ variable_decl (int elem) > goto cleanup; > } > else if (param && initializer) > - param->value = gfc_copy_expr (initializer); > + { > + if (initializer && initializer->ts.type == BT_BOZ) The test for 'initializer' can be omitted as the 'else if' has already tested that its a valid pointer. Sorry about the sloppiness, but I've moved this snippet through four different files. > + { > + gfc_error ("BOZ literal constant at %L cannot appear as an " > + "initializer", &initializer->where); > + m = MATCH_ERROR; > + goto cleanup; > + } > + param->value = gfc_copy_expr (initializer); > + } > } > > /* Before adding a possible initilizer, do a simple check for > compatibility