From 6bd0ce7b615b8ac7ccdc63458b558765847e7da9 Mon Sep 17 00:00:00 2001 From: Mikael Morin Date: Fri, 7 Oct 2011 21:47:07 +0200 Subject: [PATCH] trans-array.c (gfc_conv_expr_descriptor): Add out-of-the-scalarizer cobounds evaluation. * trans-array.c (gfc_conv_expr_descriptor): Add out-of-the-scalarizer cobounds evaluation. From-SVN: r179683 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/trans-array.c | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 8657e59f8a1..8bcaf58224c 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2011-10-07 Mikael Morin + + * trans-array.c (gfc_conv_expr_descriptor): Add out-of-the-scalarizer + cobounds evaluation. + 2011-10-07 Mikael Morin * trans-array.c (gfc_conv_ss_startstride): Support zero rank loop. diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 067fe0b7fa3..b132bf655bd 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -5994,7 +5994,21 @@ gfc_conv_expr_descriptor (gfc_se * se, gfc_expr * expr, gfc_ss * ss) tree base; if (se->want_coarray) - codim = gfc_get_corank (expr); + { + codim = gfc_get_corank (expr); + for (n = ss->data.info.dimen; n < ss->data.info.dimen + codim - 1; + n++) + { + gfc_conv_section_startstride (&loop, ss, n, true, false); + loop.from[n] = info->start[n]; + loop.to[n] = info->end[n]; + } + + gcc_assert (n == ss->data.info.dimen + codim - 1); + evaluate_bound (&loop.pre, info->start, info->ref->u.ar.start, + info->descriptor, n, true); + loop.from[n] = info->start[n]; + } else codim = 0; -- 2.30.2