diff options
author | Jakub Jelinek <jakub@redhat.com> | 2009-05-14 02:00:27 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2009-05-14 02:00:27 +0200 |
commit | 7e2791428f91a88bfe3762fa1456f435fc25e2b0 (patch) | |
tree | 939aa9b645af6be87061269b8b1cd513bd796d30 /gcc/fortran/trans-expr.c | |
parent | 00b0c19b4bbfa483925a177ed3e6ce2e1f42444b (diff) | |
download | gcc-7e2791428f91a88bfe3762fa1456f435fc25e2b0.zip gcc-7e2791428f91a88bfe3762fa1456f435fc25e2b0.tar.gz gcc-7e2791428f91a88bfe3762fa1456f435fc25e2b0.tar.bz2 |
re PR fortran/39865 (ICE in gfc_conv_scalarized_array_ref)
PR fortran/39865
* io.c (resolve_tag_format): CHARACTER array in FMT= argument
isn't an extension. Reject non-CHARACTER array element of
assumed shape or pointer or assumed size array.
* trans-array.c (array_parameter_size): New function.
(gfc_conv_array_parameter): Add size argument. Call
array_parameter_size if it is non-NULL.
* trans-array.h (gfc_conv_array_parameter): Adjust prototype.
* trans-expr.c (gfc_conv_function_call, gfc_trans_arrayfunc_assign):
Adjust callers.
* trans-intrinsic.c (gfc_conv_intrinsic_loc): Likewise.
* trans-io.c (gfc_convert_array_to_string): Rewritten.
* gfortran.dg/pr39865.f90: New test.
* gfortran.dg/hollerith.f90: Don't expect errors for CHARACTER
arrays in FMT=.
* gfortran.dg/hollerith_f95.f90: Likewise.
* gfortran.dg/hollerith6.f90: New test.
* gfortran.dg/hollerith7.f90: New test.
From-SVN: r147507
Diffstat (limited to 'gcc/fortran/trans-expr.c')
-rw-r--r-- | gcc/fortran/trans-expr.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 70c44f3..cf17598 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -2424,7 +2424,8 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym, f = f || !sym->attr.always_explicit; argss = gfc_walk_expr (arg->expr); - gfc_conv_array_parameter (se, arg->expr, argss, f, NULL, NULL); + gfc_conv_array_parameter (se, arg->expr, argss, f, + NULL, NULL, NULL); } /* TODO -- the following two lines shouldn't be necessary, but @@ -2676,7 +2677,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym, fsym ? fsym->attr.intent : INTENT_INOUT); else gfc_conv_array_parameter (&parmse, e, argss, f, fsym, - sym->name); + sym->name, NULL); /* If an ALLOCATABLE dummy argument has INTENT(OUT) and is allocated on entry, it must be deallocated. */ @@ -4352,7 +4353,7 @@ gfc_trans_arrayfunc_assign (gfc_expr * expr1, gfc_expr * expr2) gfc_start_block (&se.pre); se.want_pointer = 1; - gfc_conv_array_parameter (&se, expr1, ss, 0, NULL, NULL); + gfc_conv_array_parameter (&se, expr1, ss, 0, NULL, NULL, NULL); se.direct_byref = 1; se.ss = gfc_walk_expr (expr2); |