https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84523
--- Comment #4 from Dominique d'Humieres <dominiq at lps dot ens.fr> --- Comparing the outputs of -fDump-tree-original for r257064 and r257065 shows: --- pr84523.f90.003t.original_65 2018-02-24 14:45:17.000000000 +0100 +++ pr84523.f90.003t.original_64 2018-02-24 14:44:32.000000000 +0100 ... @@ -116,32 +116,32 @@ construct (struct t_rowcol & restrict rc *rc = t_rowcol.6; } { - integer(kind=8) D.3821; - integer(kind=4) D.3822; - integer(kind=8) D.3823; - integer(kind=8) D.3824; - integer(kind=4) D.3825; + integer(kind=8) D.3815; + integer(kind=4) D.3816; + integer(kind=8) D.3817; + integer(kind=8) D.3818; + integer(kind=4) D.3819; unsigned long size.2; - logical(kind=4) D.3827; + logical(kind=4) D.3821; integer(kind=4) overflow.3; rc->nh = *nh; - rc->spots.dtype = {.elem_len=112, .rank=1, .type=5}; - D.3821 = (integer(kind=8)) MAX_EXPR <*nh, 0>; - D.3822 = NON_LVALUE_EXPR <D.3821 != 0 ? 9223372036854775807 / D.3821 <= 0 ? 1 : 0 : 0>; - D.3823 = NON_LVALUE_EXPR <D.3821>; - D.3824 = D.3823; - D.3825 = ((unsigned long) D.3823 > 164703072086692425 ? 1 : 0) + D.3822; ^ - D.3827 = *nh <= 0; - if (D.3827) + rc->spots.dtype = 6697; + D.3815 = (integer(kind=8)) MAX_EXPR <*nh, 0>; + D.3816 = NON_LVALUE_EXPR <D.3815 != 0 ? 9223372036854775807 / D.3815 <= 0 ? 1 : 0 : 0>; + D.3817 = NON_LVALUE_EXPR <D.3815>; + D.3818 = D.3817; + D.3819 = ((unsigned long) D.3817 > 177372539170284150 ? 1 : 0) + D.3816; ^ + D.3821 = *nh <= 0; + if (D.3821) { size.2 = 0; } else { - size.2 = (unsigned long) D.3823 * 112; + size.2 = (unsigned long) D.3817 * 104; } - overflow.3 = D.3825; + overflow.3 = D.3819; if (overflow.3 != 0) { _gfortran_runtime_error (&"Integer overflow when calculating the amount of memory to allocate"[1]{lb: 1 sz: 1}); @@ -158,57 +158,57 @@ construct (struct t_rowcol & restrict rc rc->spots.dim[0].ubound = (integer(kind=8)) *nh; rc->spots.dim[0].stride = 1; rc->spots.offset = -1; - rc->spots.span = 112; ^ + rc->spots.span = 104; ^ { ...