https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91512
--- Comment #16 from Sunil Pandey <skpgkp2 at gmail dot com> --- (In reply to rguent...@suse.de from comment #15) > On Thu, 22 Aug 2019, skpgkp2 at gmail dot com wrote: > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91512 > > > > --- Comment #14 from Sunil Pandey <skpgkp2 at gmail dot com> --- > > (In reply to Richard Biener from comment #7) > > > (In reply to Sunil Pandey from comment #4) > > > > Actually it is spec cpu 2017 521.wrf benchmark getting this problem > > > > while > > > > compiling. Compilation taking forever, you can see while compiling file > > > > module_first_rk_step_part1.fppized.f90 as a representative. > > > > > > Note this file contains a single function which (besides USEing quite a > > > number > > > of modules...) has only function calls involving a lot of parameters > > > effectively forwarding parameters from the function. Thus > > > > > > SUBROUTINE foo (psim, ..., ims, ime, jms, jme) > > > REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psim > > > call sub1 (PSIM=psim, ...) > > > call sub2 (PSIM=psim, ...) > > > END SUBROUTINE > > > > > > with a _lot_ of arrays being passed through. A simple testcase like > > > > > > SUBROUTINE sub1 (psim, ims, ime, jms, jme) > > > REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psim > > > END SUBROUTINE > > > SUBROUTINE foo (psim, ims, ime, jms, jme) > > > REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psim > > > call sub1 (psim, ims, ime, jms, jme) > > > END SUBROUTINE > > > > > > doesn't show any extra loops generated though, so I'm not sure what to > > > look after. > > > > It seems very hard to create a small test case which reproduce the long > > compile > > time problem. Unfortunately, I'm not allowed to upload spec source file. > > Also > > it's very big with lots of module dependency. Assuming you have spec 2017 > > sources, > > > > Here is unmodified command line, which show compile time problem. > > > > Spec build dir: > > =============== > > > > /local/skpandey/gccwork/specx5/cpu2017/benchspec/CPU/521.wrf_r/build/build_base_gcc-10.0.0-x86-64.0000 > > > > Before the commit in question: > > ============================== > > > > Take 41 second to compile unmodified file with -O2 -march=skylake > > > > $ time > > /local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release.a4ba5c3ec624008e899a8bcb687359db25140c23/usr/gcc-10.0.0-x86-64/bin/gfortran > > -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include > > -I./inc > > -fno-unsafe-math-optimizations -mfpmath=sse -O2 -march=skylake > > -funroll-loops > > -fconvert=big-endian module_first_rk_step_part1.fppized.f90 > > > > real 0m41.295s > > user 0m41.031s > > sys 0m0.204s > > > > After the commit in question: > > ============================= > > > > It take about 12 minute with -O2 -march=skylake > > > > $ time > > /local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release/usr/gcc-10.0.0-x86-64/bin/gfortran > > -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include > > -I./inc > > -fno-unsafe-math-optimizations -mfpmath=sse -O2 -march=skylake > > -funroll-loops > > -fconvert=big-endian module_first_rk_step_part1.fppized.f90 > > > > real 11m59.498s > > user 11m53.304s > > sys 0m4.835s > > > > > > With higher optimization like -O3 or -Ofast, it take even longer and I have > > to > > kill it. > > Does it help to omit -funroll-loops? Omitting -funroll-loops help a bit but not much. $ time /local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release/usr/gcc-10.0.0-x86-64/bin/gfortran -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include -I./inc -fno-unsafe-math-optimizations -mfpmath=sse -O2 -march=skylake -fconvert=big-endian module_first_rk_step_part1.fppized.f90 real 9m4.806s user 9m2.180s sys 0m1.620s $ time /local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release/usr/gcc-10.0.0-x86-64/bin/gfortran -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include -I./inc -fno-unsafe-math-optimizations -mfpmath=sse -O3 -march=skylake -fconvert=big-endian module_first_rk_step_part1.fppized.f90 real 18m7.810s user 18m4.395s sys 0m1.498s $ time /local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release/usr/gcc-10.0.0-x86-64/bin/gfortran -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include -I./inc -fno-unsafe-math-optimizations -mfpmath=sse -O3 -march=skylake -funroll-loops -fconvert=big-endian module_first_rk_step_part1.fppized.f90 real 25m47.889s user 25m40.571s sys 0m4.639s