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 ====)

Reply via email to