From 3a73a5409f193d56911728a6df552ec26c75a3ad Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Sun, 24 Aug 2008 19:16:46 +0200 Subject: re PR fortran/37201 (ICE in in gfc_conv_string_parameter) 2008-08-24 Tobias Burnus PR fortran/37201 * trans-expr.c (gfc_conv_function_call): Add string_length for character-returning bind(C) functions. 2008-08-24 Tobias Burnus PR fortran/37201 * gfortran.dg/bind_c_usage_17.f90: New. * gfortran.dg/bind_c_usage_17_c.c: New. From-SVN: r139537 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/trans-expr.c | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'gcc/fortran') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0916029..5700f0fb 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2008-08-24 Tobias Burnus + + PR fortran/37201 + * trans-expr.c (gfc_conv_function_call): Add string_length + for character-returning bind(C) functions. + 2008-08-24 Daniel Kraft * gfortran.h (gfc_typebound_proc): New struct. diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index c85cbb2..e91434f 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -2677,7 +2677,9 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym, gfc_finish_interface_mapping (&mapping, &se->pre, &se->post); ts = sym->ts; - if (ts.type == BT_CHARACTER && !sym->attr.is_bind_c) + if (ts.type == BT_CHARACTER && sym->attr.is_bind_c) + se->string_length = build_int_cst (gfc_charlen_type_node, 1); + else if (ts.type == BT_CHARACTER) { if (sym->ts.cl->length == NULL) { -- cgit v1.1