A "side-effect" of Tobias Burnus' fix for PR92996, which addressed simplification of some array-valued constant expression, is that it fixes the ICE in the subject.
To make sure that we do not regress I committed the testcase below as rev.279699. This was OKed in the PR by Thomas König. Thanks, Harald 2019-12-21 Harald Anlauf <anl...@gmx.de> PR fortran/91661 * gfortran.dg/pr91661.f90: New test. Index: gcc/testsuite/gfortran.dg/pr91661.f90 =================================================================== --- gcc/testsuite/gfortran.dg/pr91661.f90 (nicht existent) +++ gcc/testsuite/gfortran.dg/pr91661.f90 (Arbeitskopie) @@ -0,0 +1,13 @@ +! { dg-do run } +! PR fortran/91661 +! Contributed by Gerhard Steinmetz +! Verify that fix for PR92996 also fixes this one +program p + integer, parameter :: a(2) = 2 + integer, parameter :: b(a(1)) = 3 + integer, parameter :: c = dot_product(b, b) + integer, parameter :: d(a(1)+a(2)) = 3 + integer, parameter :: e = size (d,dim=1) + if (c /= 18) stop 1 ! This used to ICE + if (e /= 4) stop 2 ! This used to ICE +end