aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/iresolve.c
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2007-11-13 20:33:21 +0000
committerPaul Thomas <pault@gcc.gnu.org>2007-11-13 20:33:21 +0000
commite73d166e6ffcd501327cb286a66a47546d785e81 (patch)
treeec13cfec6e36e0e9324e4e72cc7f26597991afb5 /gcc/fortran/iresolve.c
parent66beb09b045130f9516b110d5cf41c81f8396be6 (diff)
downloadgcc-e73d166e6ffcd501327cb286a66a47546d785e81.zip
gcc-e73d166e6ffcd501327cb286a66a47546d785e81.tar.gz
gcc-e73d166e6ffcd501327cb286a66a47546d785e81.tar.bz2
re PR fortran/34080 (Transfer was working, now broken)
2007-11-13 Paul Thomas <pault@gcc.gnu.org> PR fortran/34080 * iresolve.c (gfc_resolve_transfer): Do not try to convert to a constant MOLD expression, if it is an assumed size dummy. 2007-11-13 Paul Thomas <pault@gcc.gnu.org> PR fortran/34080 * gfortran.dg/transfer_assumed_size_1.f90: New test. From-SVN: r130158
Diffstat (limited to 'gcc/fortran/iresolve.c')
-rw-r--r--gcc/fortran/iresolve.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c
index 6de83ee..4a54963 100644
--- a/gcc/fortran/iresolve.c
+++ b/gcc/fortran/iresolve.c
@@ -2283,7 +2283,8 @@ gfc_resolve_transfer (gfc_expr *f, gfc_expr *source ATTRIBUTE_UNUSED,
/* TODO: Make this do something meaningful. */
static char transfer0[] = "__transfer0", transfer1[] = "__transfer1";
- if (mold->ts.type == BT_CHARACTER && !mold->ts.cl->length)
+ if (mold->ts.type == BT_CHARACTER && !mold->ts.cl->length
+ && !(mold->expr_type == EXPR_VARIABLE && mold->symtree->n.sym->attr.dummy))
mold->ts.cl->length = gfc_int_expr (mold->value.character.length);
f->ts = mold->ts;