2009-07-08 Jerry DeLisle <jvdelisle@gcc.gnu.org>
commita9309f25b59f632cff08c7eec6c8e57c50264603
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Jul 2009 01:20:23 +0000 (9 01:20 +0000)
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Jul 2009 01:20:23 +0000 (9 01:20 +0000)
tree3bf52d80ea16f6a7a75628ee694ae0b8f8dd3739
parent4565e223b94c4b3109373f8e4cdff196e5ceac7e
2009-07-08  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libfortran/40330
PR libfortran/40662
* io/io.h (st_parameter_dt): Define format_not_saved bit used to signal
whether the parsed format data was previously saved. Used to determine
if the current format data should be freed or not.
* io/transfer.c (st_read_done): Use the format_not_saved bit.
(st_write_done): Likewise.
* io/format.c (parse_format_list): Add boolean pointer to arg list. This
pointer is used to return status to the caller regarding whether it is
safe to cache the parsed format data.  Currently, if a FMT_STRING token
is encounetered, it is not safe to cache. Also, added a local boolean
variable to hold this information as recursive calls to
parse_format_list are made.  Remove previous save_format logic.
(parse_format): Do not use the format caching facility if the current
unit is an internal unit or if it is not safe to save parsed format
data.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149398 138bc75d-0d04-0410-961f-82ee72b054a4
libgfortran/ChangeLog
libgfortran/io/format.c
libgfortran/io/io.h
libgfortran/io/transfer.c