[Bug fortran/37498] [4.4 Regression] Incorrect array value returned - 4.3 ABI Broken

jvdelisle at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Tue Sep 23 03:55:00 GMT 2008



------- Comment #16 from jvdelisle at gcc dot gnu dot org  2008-09-23 03:53 -------
Subject: Bug 37498

Author: jvdelisle
Date: Tue Sep 23 03:52:19 2008
New Revision: 140576

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=140576
Log:
2008-09-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org

        PR fortran/37498
        * trans-io.c (gfc_build_io_library_fndecls): Bump pad size.
        (build_dt): Set mask bit for IOPARM_dt_f2003.
        * ioparm.def: Add IOPARM_dt_f2003.

2008-09-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org

        PR libfortran/37498
        * file_pos (st_endfile): Clear memory only for libfortran 4.3 private
        area.
        * list_read.c (eat_separator): Only access F2003 I/O parameters if
        IOPARM_DT_HAS_F2003 bit is set. (parse_real): Ditto.
        (read_real): Ditto.
        * read.c (read_a): Likewise. (read_a_char4): Likewise though not
        strictly necessary. (read_f): Likewise.
        * io.h (unit_sign_s): New enumerator to allow duplication of
        st_parameter structures. (IOPARM_DT_HAS_F2003): New mask bit.
        (st_parameter_43): New structure copied from 4.3 version of 
        st_paramater_dt private section. (st_parameter_44): New structure with
        F2003 items added. (st_parameter_dt): Modified to create union of new
        and old structures to allow correct memory setting for 4.3 ABI
        compatibility. Bumped the pad size.
        * transfer.c (read_sf): Do not use F2003 I/O memory areas unless
        IOPARM_DT_HAS_F2003 bit has been set. (read_block_form): Ditto.
        (formatted_transfer_scalar): Ditto. (data_transfer_init): Ditto and
        add comment, fix formatting.
        * write.c (write_default_char4): Likewise though not strictly
necessary.
        (write_utf8_char4): Ditto. (write_character): Ditto.
        (write_real_g0): Ditto. (list_formatted_write_scalar): Ditto.
        (nml_write_obj): Ditto. (namelist_write): Ditto.
        * write_float.def (calculate_sign): Eliminate warning by including all
        cases in switch. (output_float): Output only decimal point of F2003
flag
        is not set.

Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/ioparm.def
    trunk/gcc/fortran/trans-io.c
    trunk/libgfortran/ChangeLog
    trunk/libgfortran/io/file_pos.c
    trunk/libgfortran/io/io.h
    trunk/libgfortran/io/list_read.c
    trunk/libgfortran/io/read.c
    trunk/libgfortran/io/transfer.c
    trunk/libgfortran/io/write.c
    trunk/libgfortran/io/write_float.def


-- 


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



More information about the Gcc-bugs mailing list