[Bug libfortran/56737] [4.6/4.7/4.8/4.9 Regression] Wrong I/O result with format cache for Hollerith strings

burnus at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Mar 27 19:32:00 GMT 2013


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

Tobias Burnus <burnus at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
      Known to work|                            |4.3.4, 4.4.0
           Keywords|                            |wrong-code
   Last reconfirmed|                            |2013-03-27
                 CC|                            |burnus at gcc dot gnu.org,
                   |                            |jvdelisle at gcc dot
                   |                            |gnu.org
     Ever Confirmed|0                           |1
            Summary|Bizarre Hollerith edit      |[4.6/4.7/4.8/4.9
                   |descriptor errors (valgrind |Regression] Wrong I/O
                   |shows uninitialized value   |result with format cache
                   |in libgfortran)             |for Hollerith strings
   Target Milestone|---                         |4.6.4
      Known to fail|                            |4.5.3, 4.6.3, 4.7.2, 4.8.0,
                   |                            |4.9.0

--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-03-27 19:32:32 UTC ---
Seems to be a regression in libgfortran. It works with gfortran 4.3 and 4.4,
but fails with gfortran 4.5 to 4.9.

(Compiling with 4.9 and running with libgfortran 4.3 works, i.e. the regression
must be in libgfortran.)

It works if one disables the format cache.



If one adds some debugging output to write_constant_string, one sees that for
the second call, the delimiter (f->u.string.p[-1]) is not 'H' - and the first
6H is also wrong.

write_constant_string: len=1: f->u.string.p=' '- delim='H'
write_constant_string: len=1: f->u.string.p=' '- delim='H'
write_constant_string: len=1: f->u.string.p=' '- delim='H'
write_constant_string: len=6: f->u.string.p='===== '- delim='h'
write_constant_string: len=6: f->u.string.p=' ====='- delim='h'
   ===== end of level   1 =====
write_constant_string: len=1: f->u.string.p=' '- delim=' '
write_constant_string: len=1: f->u.string.p=' '- delim=' '
write_constant_string: len=1: f->u.string.p=' '- delim=' '
write_constant_string: len=6: f->u.string.p='      '- delim=' '
write_constant_string: len=6: f->u.string.p=' ====='- delim=' '
         end of level   1 ====)



More information about the Gcc-bugs mailing list