aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-array.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard@codesourcery.com>2005-09-08 18:46:06 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2005-09-08 18:46:06 +0000
commit0348d6fd857a367763b2e7c59449aa545b5c8c14 (patch)
treeb6a188c252604f0bb8093a302e7455b168cbfa98 /gcc/fortran/trans-array.c
parent5c9186cec38354d5b51e41cbfb37d89a1a8ddca9 (diff)
downloadgcc-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.c1
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: