https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97571
anlauf at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |anlauf at gcc dot gnu.org --- Comment #1 from anlauf at gcc dot gnu.org --- Looking at the dump-tree of a reduced case reveals that simplification of the line with the ACOS of the array constructor causes the difference: subroutine bpr_init implicit none integer :: i real :: tacos2(2) tacos2 = acos( (/ (i, i=1,size(tacos2)) /) / 2.0) end subroutine bpr_init 11-master: bpr_init () { integer(kind=4) i; real(kind=4) tacos2[2]; { static real(kind=4) A.0[2] = {1.0471975803375244140625e+0, 0.0}; (void) __builtin_memcpy ((void *) &tacos2, (void *) &A.0, 8); } } older versions: bpr_init () { integer(kind=4) i; real(kind=4) tacos2[2]; { static real(kind=4) A.0[2] = {5.0e-1, 1.0e+0}; { integer(kind=8) S.1; S.1 = 0; while (1) { if (S.1 > 1) goto L.1; tacos2[S.1] = __builtin_acosf (A.0[S.1]); S.1 = S.1 + 1; } L.1:; } } } So the new compiler does compile-time simplification already at -O0, while older versions maybe not.