aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Morin <mikael@gcc.gnu.org>2011-10-18 15:02:38 +0000
committerMikael Morin <mikael@gcc.gnu.org>2011-10-18 15:02:38 +0000
commit6cab5e07b00571596966f764d7d37c6b58bbcdca (patch)
tree676ec71d78e336ae5a90852a5dadb2ff175e7b53
parent411e1a0f5350182c7833016eff8f1459a92d7531 (diff)
downloadgcc-6cab5e07b00571596966f764d7d37c6b58bbcdca.zip
gcc-6cab5e07b00571596966f764d7d37c6b58bbcdca.tar.gz
gcc-6cab5e07b00571596966f764d7d37c6b58bbcdca.tar.bz2
re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
PR fortran/50420 * trans-intrinsic.c (walk_coarray): Change AR_ELEMENT to AR_SECTION. PR fortran/50420 * trans-intrinsic.c (walk_coarray): Use gfc_walk_array_ref for the scalarization chain initialization. From-SVN: r180147
-rw-r--r--gcc/fortran/ChangeLog9
-rw-r--r--gcc/fortran/trans-intrinsic.c7
2 files changed, 12 insertions, 4 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 819369c..2b3ca85 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,6 +1,15 @@
2011-10-18 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/50420
+ * trans-intrinsic.c (walk_coarray): Change AR_ELEMENT to AR_SECTION.
+
+ PR fortran/50420
+ * trans-intrinsic.c (walk_coarray): Use gfc_walk_array_ref for
+ the scalarization chain initialization.
+
+2011-10-18 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/50420
* trans-intrinsic.c (walk_coarray): Allow subreferences after a
coarray object reference.
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c
index 82bbb69..83fc4fc 100644
--- a/gcc/fortran/trans-intrinsic.c
+++ b/gcc/fortran/trans-intrinsic.c
@@ -940,8 +940,6 @@ walk_coarray (gfc_expr *e)
{
gfc_ref *ref;
- ss = gfc_get_array_ss (gfc_ss_terminator, e, 0, GFC_SS_SECTION);
-
ref = e->ref;
while (ref)
{
@@ -953,8 +951,9 @@ walk_coarray (gfc_expr *e)
}
gcc_assert (ref != NULL);
- ref->u.ar.type = AR_FULL;
- ss->data.info.ref = ref;
+ if (ref->u.ar.type == AR_ELEMENT)
+ ref->u.ar.type = AR_SECTION;
+ ss = gfc_reverse_ss (gfc_walk_array_ref (ss, e, ref));
}
return ss;