aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-expr.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2008-08-24 19:16:46 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2008-08-24 19:16:46 +0200
commit3a73a5409f193d56911728a6df552ec26c75a3ad (patch)
tree68396cfe33ea5ca4b99691d8c019ac84b7191117 /gcc/fortran/trans-expr.c
parent0dbca53731ccc8e6785b30ccb679bad2faa9ea2c (diff)
downloadgcc-3a73a5409f193d56911728a6df552ec26c75a3ad.zip
gcc-3a73a5409f193d56911728a6df552ec26c75a3ad.tar.gz
gcc-3a73a5409f193d56911728a6df552ec26c75a3ad.tar.bz2
re PR fortran/37201 (ICE in in gfc_conv_string_parameter)
2008-08-24 Tobias Burnus <burnus@net-b.de> PR fortran/37201 * trans-expr.c (gfc_conv_function_call): Add string_length for character-returning bind(C) functions. 2008-08-24 Tobias Burnus <burnus@net-b.de> PR fortran/37201 * gfortran.dg/bind_c_usage_17.f90: New. * gfortran.dg/bind_c_usage_17_c.c: New. From-SVN: r139537
Diffstat (limited to 'gcc/fortran/trans-expr.c')
-rw-r--r--gcc/fortran/trans-expr.c4
1 files changed, 3 insertions, 1 deletions
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)
{