aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-expr.c
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2014-04-13 11:58:55 +0000
committerPaul Thomas <pault@gcc.gnu.org>2014-04-13 11:58:55 +0000
commit1cf43a1dbdb4f61d2f9bbfffb2fdc6130aa07781 (patch)
treea0e9223d3fa93775c9210bdc4aade00d42633cb2 /gcc/fortran/trans-expr.c
parentef3a248fbb9c61d510cdcee3de0476994ae32790 (diff)
downloadgcc-1cf43a1dbdb4f61d2f9bbfffb2fdc6130aa07781.zip
gcc-1cf43a1dbdb4f61d2f9bbfffb2fdc6130aa07781.tar.gz
gcc-1cf43a1dbdb4f61d2f9bbfffb2fdc6130aa07781.tar.bz2
re PR fortran/58085 (Wrong indexing of an array in ASSOCIATE)
2014-04-13 Paul Thomas <pault@gcc.gnu.org> PR fortran/58085 PR fortran/60717 * trans.h: Add 'use_offset' bitfield to gfc_se. * trans-array.c (gfc_conv_expr_descriptor): Use 'use_offset' as a trigger to unconditionally recalculate the offset for array slices and constant arrays. trans-expr.c (gfc_conv_intrinsic_to_class): Use it. trans-stmt.c (trans_associate_var): Ditto. (gfc_conv_procedure_call): Ditto. 2014-04-13 Paul Thomas <pault@gcc.gnu.org> PR fortran/60717 * gfortran.dg/unlimited_polymorphic_17.f90: New test. PR fortran/58085 * gfortran.dg/associate_15.f90: New test. From-SVN: r209347
Diffstat (limited to 'gcc/fortran/trans-expr.c')
-rw-r--r--gcc/fortran/trans-expr.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 30931a3..955102b 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -593,6 +593,7 @@ gfc_conv_intrinsic_to_class (gfc_se *parmse, gfc_expr *e,
else
{
parmse->ss = ss;
+ parmse->use_offset = 1;
gfc_conv_expr_descriptor (parmse, e);
gfc_add_modify (&parmse->pre, ctree, parmse->expr);
}
@@ -4378,6 +4379,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
|| CLASS_DATA (fsym)->attr.codimension))
{
/* Pass a class array. */
+ parmse.use_offset = 1;
gfc_conv_expr_descriptor (&parmse, e);
/* If an ALLOCATABLE dummy argument has INTENT(OUT) and is