aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2006-09-11 05:02:58 +0000
committerPaul Thomas <pault@gcc.gnu.org>2006-09-11 05:02:58 +0000
commit7f39b34c7e9dfb658cad14ba0f2e2837cda695cb (patch)
tree35baec3c4421884fed9311bf88cfb8e1f452b755 /gcc/fortran/resolve.c
parentbc70af526c6b2243c68242d0aa6a48da9da4003d (diff)
downloadgcc-7f39b34c7e9dfb658cad14ba0f2e2837cda695cb.zip
gcc-7f39b34c7e9dfb658cad14ba0f2e2837cda695cb.tar.gz
gcc-7f39b34c7e9dfb658cad14ba0f2e2837cda695cb.tar.bz2
re PR fortran/28890 (ICE on write)
2006-09-11 Paul Thomas <pault@gcc.gnu.org> PR fortran/28890 trans-expr.c (gfc_conv_function_call): Obtain the string length of a dummy character(*) function from the symbol if it is not already translated. For a call to a character(*) function, use the passed, hidden string length argument, which is available from the backend_decl of the formal argument. resolve.c (resolve_function): It is an error if a function call to a character(*) function is other than a dummy procedure or an intrinsic. 2006-09-11 Paul Thomas <pault@gcc.gnu.org> PR libfortran/28890 gfortran.dg/assumed_charlen_function_5.f90: New test. From-SVN: r116839
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r--gcc/fortran/resolve.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index b62a041..c9475cc 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -1413,6 +1413,7 @@ resolve_function (gfc_expr * expr)
&& sym->ts.cl
&& sym->ts.cl->length == NULL
&& !sym->attr.dummy
+ && expr->value.function.esym == NULL
&& !sym->attr.contained)
{
/* Internal procedures are taken care of in resolve_contained_fntype. */