[Bug fortran/85531] New: Implement some loop fusion in the Fortran front end
tkoenig at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Apr 26 07:08:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85531
Bug ID: 85531
Summary: Implement some loop fusion in the Fortran front end
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: tkoenig at gcc dot gnu.org
Target Milestone: ---
See the discussion starting at https://gcc.gnu.org/ml/gcc/2018-04/msg00128.html
.
Basically, for code like
ZQICE(1:NPROMA,1:NFLEVG) = PGFL(1:NPROMA,1:NFLEVG,YI%MP)
ZQLI(1:NPROMA,1:NFLEVG) = PGFL(1:NPROMA,1:NFLEVG,YL%MP)
ZQRAIN(1:NPROMA,1:NFLEVG) = PGFL(1:NPROMA,1:NFLEVG,YR%MP)
ZQSNOW(1:NPROMA,1:NFLEVG) = PGFL(1:NPROMA,1:NFLEVG,YS%MP)
the front end could notice that the right-hand sides always agree
and translate this to
DO J=1,NFLEVG
DO I=1,NPROMA
ZQICE(I,J) = PGFL(I,J,YI%MP)
ZQLI(I,J) = PGFL(I,J,YI%MP)
ZQRAIN(I,J) = PGFL(I,J,YI%MP)
ZQSNOW(I,J) = PGFL(I,J,YI%MP)
END DO
END DO
This would require some data flow analysis (are we sure that PGFL
is not changed in the meantime?) and some basic block analysis.
More information about the Gcc-bugs
mailing list