https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91512

--- Comment #15 from rguenther at suse dot de <rguenther at suse dot de> ---
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?

Reply via email to