re PR fortran/36112 (Bounds-checking on character length not working for array-constr...
authorDaniel Kraft <d@domob.eu>
Tue, 17 Jun 2008 20:24:20 +0000 (22:24 +0200)
committerDaniel Kraft <domob@gcc.gnu.org>
Tue, 17 Jun 2008 20:24:20 +0000 (22:24 +0200)
commit88fec49fbb65368451cde61064b45d3ce12a29b8
tree5c2c5289e8a828727de4afdeb3de36331297bdc3
parent9d5c21c1f0bc3888f494dc9114e27570646c0a8f
re PR fortran/36112 (Bounds-checking on character length not working for array-constructors)

2008-06-17  Daniel Kraft  <d@domob.eu>

PR fortran/36112
* array.c (gfc_resolve_character_array_constructor):  Check that all
elements with constant character length have the same one rather than
fixing it if no typespec is given, emit an error if they don't.  Changed
return type to "try" and return FAILURE for the case above.
(gfc_resolve_array_constructor):  Removed unneeded call to
gfc_resolve_character_array_constructor in this function.
* gfortran.h (gfc_resolve_character_array_constructor):  Returns try.
* trans-array.c (get_array_ctor_strlen):  Return length of first element
rather than last element.
* resolve.c (gfc_resolve_expr):  Handle FAILURE return from
gfc_resolve_character_array_constructor.

2008-06-17  Daniel Kraft  <d@domob.eu>

PR fortran/36112
* gfortran.dg/bounds_check_array_ctor_1.f90:  New test.
* gfortran.dg/bounds_check_array_ctor_2.f90:  New test.
* gfortran.dg/bounds_check_array_ctor_3.f90:  New test.
* gfortran.dg/bounds_check_array_ctor_4.f90:  New test.
* gfortran.dg/bounds_check_array_ctor_5.f90:  New test.
* gfortran.dg/bounds_check_array_ctor_6.f90:  New test.
* gfortran.dg/bounds_check_array_ctor_7.f90:  New test.
* gfortran.dg/bounds_check_array_ctor_8.f90:  New test.
* gfortran.dg/arrayio_0.f90:  Fixed invalid array constructor.
* gfortran.dg/char_cons_len.f90:  Ditto.
* gfortran.dg/char_initializer_actual.f90:  Ditto.
* gfortran.dg/pr15959.f90:  Ditto.
* gfortran.dg/transfer_simplify_2.f90:  Ditto.
* gfortran.dg/char_length_1.f90:  Changed expected error messages.

From-SVN: r136872
20 files changed:
gcc/fortran/ChangeLog
gcc/fortran/array.c
gcc/fortran/gfortran.h
gcc/fortran/resolve.c
gcc/fortran/trans-array.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/arrayio_0.f90
gcc/testsuite/gfortran.dg/bounds_check_array_ctor_1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/bounds_check_array_ctor_2.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/bounds_check_array_ctor_3.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/bounds_check_array_ctor_4.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/bounds_check_array_ctor_5.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/bounds_check_array_ctor_6.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/bounds_check_array_ctor_7.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/bounds_check_array_ctor_8.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/char_cons_len.f90
gcc/testsuite/gfortran.dg/char_initialiser_actual.f90
gcc/testsuite/gfortran.dg/char_length_1.f90
gcc/testsuite/gfortran.dg/pr15959.f90
gcc/testsuite/gfortran.dg/transfer_simplify_2.f90