https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68565
Bug ID: 68565 Summary: [6 Regression] graphite : -O2 -floop-nest-optimize miscompile Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: Joost.VandeVondele at mat dot ethz.ch Target Milestone: --- current trunk lead to wrong code for the following testcase if -floop-nest-optimize is used: > cat test.f90 MODULE test IMPLICIT NONE TYPE subset_type INTEGER :: ncon_tot REAL(KIND=8),DIMENSION(:,:),ALLOCATABLE :: coeff END TYPE CONTAINS SUBROUTINE foo(subset) TYPE(subset_type) :: subset INTEGER :: icon1 DO icon1=1,subset%ncon_tot subset%coeff(:,icon1)=subset%coeff(:,icon1)/& SQRT(DOT_PRODUCT(subset%coeff(:,icon1),subset%coeff(:,icon1))) END DO END SUBROUTINE END MODULE USE test TYPE(subset_type) :: subset INTEGER, VOLATILE :: n1=7,n2=4 ALLOCATE(subset%coeff(n1,n2)) CALL RANDOM_NUMBER(subset%coeff) subset%coeff=subset%coeff-0.5 subset%ncon_tot=n2 CALL foo(subset) WRITE(6,*) MAXVAL(subset%coeff) END > gfortran -g -O2 -floop-nest-optimize test.f90 && ./a.out Program received signal SIGFPE: Floating-point exception - erroneous arithmetic operation. Backtrace for this error: #0 0x302a43269f in ??? #1 0x40095a in __test_MOD_foo at /data/vjoost/gnu/bugs/test.f90:13 #2 0x400bb8 in MAIN__ at /data/vjoost/gnu/bugs/test.f90:25 #3 0x4007dc in main at /data/vjoost/gnu/bugs/test.f90:18 Floating point exception > gfortran -g -O2 test.f90 && ./a.out 0.75457607554184802 > gfortran -v Using built-in specs. COLLECT_GCC=gfortran COLLECT_LTO_WRAPPER=/data/vjoost/gnu/gcc_trunk/install/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../gcc/configure --prefix=/data/vjoost/gnu/gcc_trunk/install --enable-languages=c,c++,fortran --disable-multilib --enable-plugins --enable-lto --disable-bootstrap Thread model: posix gcc version 6.0.0 20151126 (experimental) [trunk revision 230923] (GCC)