OSDN Git Service

* trans-array.c (gfc_walk_variable_expr): Remove scalar coarray
authormikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 7 Oct 2011 20:26:11 +0000 (20:26 +0000)
committermikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 7 Oct 2011 20:26:11 +0000 (20:26 +0000)
handling.  Don't reset array ref's corank and codimensions' types
in the full array ref case.  Update loop upper limit.
Remove DIMEN_THIS_IMAGE case.  Remove unnecessary conditions.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179691 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/trans-array.c

index 046635c..6a0b284 100644 (file)
@@ -1,5 +1,12 @@
 2011-10-07  Mikael Morin  <mikael.morin@sfr.fr>
 
+       * trans-array.c (gfc_walk_variable_expr): Remove scalar coarray
+       handling.  Don't reset array ref's corank and codimensions' types
+       in the full array ref case.  Update loop upper limit.
+       Remove DIMEN_THIS_IMAGE case.  Remove unnecessary conditions.
+
+2011-10-07  Mikael Morin  <mikael.morin@sfr.fr>
+
        * trans.h (gfc_ss_info): Remove codimen field.
        * trans-array.c (gfc_get_array_ss): Don't set codimen field.
        (gfc_trans_create_temp_array): Don't set descriptor's cobounds.
index fa05d2b..87d5200 100644 (file)
@@ -7612,12 +7612,6 @@ gfc_walk_variable_expr (gfc_ss * ss, gfc_expr * expr)
 
       ar = &ref->u.ar;
 
-      if (ar->as->rank == 0 && ref->next != NULL)
-       {
-         /* Scalar coarray.  */
-         continue;
-       }
-
       switch (ar->type)
        {
        case AR_ELEMENT:
@@ -7632,7 +7626,6 @@ gfc_walk_variable_expr (gfc_ss * ss, gfc_expr * expr)
          /* Make sure array is the same as array(:,:), this way
             we don't need to special case all the time.  */
          ar->dimen = ar->as->rank;
-         ar->codimen = 0;
          for (n = 0; n < ar->dimen; n++)
            {
              ar->dimen_type[n] = DIMEN_RANGE;
@@ -7641,14 +7634,6 @@ gfc_walk_variable_expr (gfc_ss * ss, gfc_expr * expr)
              gcc_assert (ar->end[n] == NULL);
              gcc_assert (ar->stride[n] == NULL);
            }
-         for (n = ar->dimen; n < ar->dimen + ar->as->corank; n++)
-           {
-             newss->data.info.dim[n] = n;
-             ar->dimen_type[n] = DIMEN_RANGE;
-
-             gcc_assert (ar->start[n] == NULL);
-             gcc_assert (ar->end[n] == NULL);
-           }
          ss = newss;
          break;
 
@@ -7657,14 +7642,12 @@ gfc_walk_variable_expr (gfc_ss * ss, gfc_expr * expr)
          newss->data.info.ref = ref;
 
          /* We add SS chains for all the subscripts in the section.  */
-         for (n = 0; n < ar->dimen + ar->codimen; n++)
+         for (n = 0; n < ar->dimen; n++)
            {
              gfc_ss *indexss;
 
              switch (ar->dimen_type[n])
                {
-               case DIMEN_THIS_IMAGE:
-                 continue;
                case DIMEN_ELEMENT:
                  /* Add SS for elemental (scalar) subscripts.  */
                  gcc_assert (ar->start[n]);
@@ -7677,8 +7660,7 @@ gfc_walk_variable_expr (gfc_ss * ss, gfc_expr * expr)
                   /* We don't add anything for sections, just remember this
                      dimension for later.  */
                  newss->data.info.dim[newss->data.info.dimen] = n;
-                 if (n < ar->dimen)
-                   newss->data.info.dimen++;
+                 newss->data.info.dimen++;
                  break;
 
                case DIMEN_VECTOR:
@@ -7689,8 +7671,7 @@ gfc_walk_variable_expr (gfc_ss * ss, gfc_expr * expr)
                  indexss->loop_chain = gfc_ss_terminator;
                  newss->data.info.subscript[n] = indexss;
                  newss->data.info.dim[newss->data.info.dimen] = n;
-                 if (n < ar->dimen)
-                   newss->data.info.dimen++;
+                 newss->data.info.dimen++;
                  break;
 
                default: