[Bug fortran/35682] assignment to run-time zero-sized complex section stores a value

burnus at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Tue Mar 25 16:38:00 GMT 2008



------- Comment #2 from burnus at gcc dot gnu dot org  2008-03-25 16:37 -------
Failing is:
       XCA(NF1:NF10:MF1) = XDA(NF1:NF2:MF3)    !fails
that is:
   XCA(1:10:-1) = XDA(1:2:-3)

The problem is that (1:2:-3) is not regarded as empty range but as containing
one element: size(XDA(1:2:-3)) prints "1" and also -fbounds-check gives an
error.

In the source, the problem is:

      D.963 = (nf2-nf1)/mf3 ! This is: (2-1)/-3 = 0
      S.1 = 0;
      while (1)
        {
          if (S.1 > D.963) goto L.3;
          // xca[...] = xda[...] assignment

The assignment is executed once as "S.1 > D.963" is initially "0 > 0".

Note: Ensure that the patch also fixes -fbounds-check.

Related program, which also fails (I thought we fixed this; this seems to be a
libgfortran problem):

      integer xda(20)
      integer, volatile :: n
      n = 1
      print *, size(XDA(n:2:-3)) ! should print 0, prints 1
      END


-- 

burnus at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
           Keywords|                            |wrong-code
   Last reconfirmed|0000-00-00 00:00:00         |2008-03-25 16:37:47
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35682



More information about the Gcc-bugs mailing list