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)

Reply via email to