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

            Bug ID: 61927
           Summary: Optimization bug (regression): Array comparison yields
                    unassigned result at -O3
           Product: gcc
           Version: 4.9.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: krefson at gmail dot com

The attached code, which tests an allocatable array for nonzero values, works
correctly when compiled at -O1 and -O3, but malfunctions at -O3.

$ gfortran -O2  arrayop2.f90
$ ./a.out
Symm_Nonzero
    T    F    F    F    T    F    F    F    T   3
    T    F    F    F    T    F    F    F    T   3
    T    F    F    F    F    T    F    T    F   3
    T    F    F    F    F    T    F    T    F   3
    T    F    F    F    T    F    F    F    T   3
    T    F    F    F    T    F    F    F    T   3
    T    F    F    F    F    T    F    T    F   3
    T    F    F    F    F    T    F    T    F   3
$ ./a.out
Symm_Nonzero
    T    F    F    F    T    F    F    F    T   3
    F    F    F    T    T    F    F    T    T   4
    T    T    T    F    T    T    F    F    T****
    T    F    F    T    F    T    T    F    F****
    F    F    T    T    F    F    T    T    T   5
    T    T    T    T    T    F    F    T    T****
    T    T    T    T    F    F    T    T    T****
    T    T    F    T    T    T    T    T    T****

Running under valgrind reveals that some elements of the result array
"symm_nonzero" contain uninitialized data in the -O3 case.

This is a regression in 4.9.1.  The code works correctly at -O3 under 4.8,2


uname -a
Linux gibbs 3.12.21-desktop-2.mga4 #1 SMP Thu Jun 5 21:33:44 UTC 2014 x86_64
x86_64 x86_64 GNU/Linux

$ gfortran --version
GNU Fortran (GCC) 4.9.1 20140709 (prerelease)
Copyright (C) 2014 Free Software Foundation, Inc.

Reply via email to