diff options
author | Richard Sandiford <richard@codesourcery.com> | 2005-09-08 18:46:06 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2005-09-08 18:46:06 +0000 |
commit | 0348d6fd857a367763b2e7c59449aa545b5c8c14 (patch) | |
tree | b6a188c252604f0bb8093a302e7455b168cbfa98 /gcc/fortran/trans-array.c | |
parent | 5c9186cec38354d5b51e41cbfb37d89a1a8ddca9 (diff) | |
download | gcc-0348d6fd857a367763b2e7c59449aa545b5c8c14.zip gcc-0348d6fd857a367763b2e7c59449aa545b5c8c14.tar.gz gcc-0348d6fd857a367763b2e7c59449aa545b5c8c14.tar.bz2 |
re PR fortran/15326 ([4.0 only] ICE with assumed length character strings)
PR fortran/15326
* trans-array.c (gfc_add_loop_ss_code): Set ss->string_length in
the GFC_SS_FUNCTION case too.
* trans-expr.c (gfc_conv_function_val): Allow symbols to be bound
to function pointers as well as function decls.
(gfc_interface_sym_mapping, gfc_interface_mapping): New structures.
(gfc_init_interface_mapping, gfc_free_interface_mapping)
(gfc_get_interface_mapping_charlen, gfc_get_interface_mapping_array)
(gfc_set_interface_mapping_bounds, gfc_add_interface_mapping)
(gfc_finish_interface_mapping, gfc_apply_interface_mapping_to_cons)
(gfc_apply_interface_mapping_to_ref)
(gfc_apply_interface_mapping_to_expr)
(gfc_apply_interface_mapping): New functions.
(gfc_conv_function_call): Evaluate the arguments before working
out where the result should go. Make the null pointer case provide
the string length in parmse.string_length. Cope with non-constant
string lengths, using the above functions to evaluate such lengths.
Use a temporary typespec; don't assign to sym->cl->backend_decl.
Don't assign to se->string_length when returning a cached array
descriptor.
From-SVN: r104040
Diffstat (limited to 'gcc/fortran/trans-array.c')
-rw-r--r-- | gcc/fortran/trans-array.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 9012a07..fbd8b5b 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -1233,6 +1233,7 @@ gfc_add_loop_ss_code (gfc_loopinfo * loop, gfc_ss * ss, bool subscript) gfc_conv_expr (&se, ss->expr); gfc_add_block_to_block (&loop->pre, &se.pre); gfc_add_block_to_block (&loop->post, &se.post); + ss->string_length = se.string_length; break; case GFC_SS_CONSTRUCTOR: |