https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105954
--- Comment #3 from anlauf at gcc dot gnu.org --- (In reply to anlauf from comment #2) > Reduced testcase: > > integer, parameter :: m = sizeof(d) ! ICE for n < 1 In target-memory.cc we run into int_size_in_bytes(), which returns -12 for n=0, and -24 for n=-1, and so on... (gdb) l 127 gfc_typespec ts; 128 HOST_WIDE_INT size; 129 ts = e->ts; 130 type = gfc_typenode_for_spec (&ts); 131 size = int_size_in_bytes (type); 132 gcc_assert (size >= 0); 133 *siz = size; 134 } It is strange that -fdump-fortran-original shows the same output for n=0 and n=-1 when commenting out the ICEing line, so I wonder where this difference comes from. Some help interpreting tree type here might be helpful...