OSDN Git Service

* trans.h (struct gfc_ss, struct gfc_ss_info): Move field
authormikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Nov 2011 22:29:25 +0000 (22:29 +0000)
committermikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Nov 2011 22:29:25 +0000 (22:29 +0000)
gfc_ss::where into gfc_ss_info.
* trans-array.c (gfc_add_loop_ss_code):
Update reference chains.
* trans-stmt.c (gfc_trans_where_assign, gfc_trans_where_3): Ditto.

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

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

index baa20a9..802c2ff 100644 (file)
@@ -1,6 +1,14 @@
 2011-11-03  Mikael Morin  <mikael@gcc.gnu.org>
 
        * trans.h (struct gfc_ss, struct gfc_ss_info): Move field
 2011-11-03  Mikael Morin  <mikael@gcc.gnu.org>
 
        * trans.h (struct gfc_ss, struct gfc_ss_info): Move field
+       gfc_ss::where into gfc_ss_info.
+       * trans-array.c (gfc_add_loop_ss_code):
+       Update reference chains.
+       * trans-stmt.c (gfc_trans_where_assign, gfc_trans_where_3): Ditto.
+
+2011-11-03  Mikael Morin  <mikael@gcc.gnu.org>
+
+       * trans.h (struct gfc_ss, struct gfc_ss_info): Move field
        gfc_ss::useflags into gfc_ss_info.
        * trans-array.c (gfc_mark_ss_chain_used, gfc_trans_preloop_setup,
        gfc_trans_scalarizing_loops, gfc_trans_scalarized_boundary):
        gfc_ss::useflags into gfc_ss_info.
        * trans-array.c (gfc_mark_ss_chain_used, gfc_trans_preloop_setup,
        gfc_trans_scalarizing_loops, gfc_trans_scalarized_boundary):
index 427bb7b..045c426 100644 (file)
@@ -2203,7 +2203,7 @@ gfc_add_loop_ss_code (gfc_loopinfo * loop, gfc_ss * ss, bool subscript,
                 scalarization loop, except for WHERE assignments.  */
              if (subscript)
                se.expr = convert(gfc_array_index_type, se.expr);
                 scalarization loop, except for WHERE assignments.  */
              if (subscript)
                se.expr = convert(gfc_array_index_type, se.expr);
-             if (!ss->where)
+             if (!ss_info->where)
                se.expr = gfc_evaluate_now (se.expr, &loop->pre);
              gfc_add_block_to_block (&loop->pre, &se.post);
            }
                se.expr = gfc_evaluate_now (se.expr, &loop->pre);
              gfc_add_block_to_block (&loop->pre, &se.post);
            }
index 101a651..86a56e8 100644 (file)
@@ -4062,7 +4062,7 @@ gfc_trans_where_assign (gfc_expr *expr1, gfc_expr *expr2,
     {
       /* The rhs is scalar.  Add a ss for the expression.  */
       rss = gfc_get_scalar_ss (gfc_ss_terminator, expr2);
     {
       /* The rhs is scalar.  Add a ss for the expression.  */
       rss = gfc_get_scalar_ss (gfc_ss_terminator, expr2);
-      rss->where = 1;
+      rss->info->where = 1;
     }
 
   /* Associate the SS with the loop.  */
     }
 
   /* Associate the SS with the loop.  */
@@ -4501,7 +4501,7 @@ gfc_trans_where_3 (gfc_code * cblock, gfc_code * eblock)
   if (tsss == gfc_ss_terminator)
     {
       tsss = gfc_get_scalar_ss (gfc_ss_terminator, tsrc);
   if (tsss == gfc_ss_terminator)
     {
       tsss = gfc_get_scalar_ss (gfc_ss_terminator, tsrc);
-      tsss->where = 1;
+      tsss->info->where = 1;
     }
   gfc_add_ss_to_loop (&loop, tdss);
   gfc_add_ss_to_loop (&loop, tsss);
     }
   gfc_add_ss_to_loop (&loop, tdss);
   gfc_add_ss_to_loop (&loop, tsss);
@@ -4516,7 +4516,7 @@ gfc_trans_where_3 (gfc_code * cblock, gfc_code * eblock)
       if (esss == gfc_ss_terminator)
        {
          esss = gfc_get_scalar_ss (gfc_ss_terminator, esrc);
       if (esss == gfc_ss_terminator)
        {
          esss = gfc_get_scalar_ss (gfc_ss_terminator, esrc);
-         esss->where = 1;
+         esss->info->where = 1;
        }
       gfc_add_ss_to_loop (&loop, edss);
       gfc_add_ss_to_loop (&loop, esss);
        }
       gfc_add_ss_to_loop (&loop, edss);
       gfc_add_ss_to_loop (&loop, esss);
index 907c271..c35b1ae 100644 (file)
@@ -214,6 +214,9 @@ typedef struct gfc_ss_info
      loops the terms appear in.  This will be 1 for the RHS expressions,
      2 for the LHS expressions, and 3(=1|2) for the temporary.  */
   unsigned useflags:2;
      loops the terms appear in.  This will be 1 for the RHS expressions,
      2 for the LHS expressions, and 3(=1|2) for the temporary.  */
   unsigned useflags:2;
+
+  /* Suppresses precalculation of scalars in WHERE assignments.  */
+  unsigned where:1;
 }
 gfc_ss_info;
 
 }
 gfc_ss_info;
 
@@ -242,9 +245,7 @@ typedef struct gfc_ss
   struct gfc_ss *loop_chain;
   struct gfc_ss *next;
 
   struct gfc_ss *loop_chain;
   struct gfc_ss *next;
 
-  /* The bit 'where' suppresses precalculation of scalars in WHERE assignments.
-  */
-  unsigned where:1, is_alloc_lhs:1;
+  unsigned is_alloc_lhs:1;
 }
 gfc_ss;
 #define gfc_get_ss() XCNEW (gfc_ss)
 }
 gfc_ss;
 #define gfc_get_ss() XCNEW (gfc_ss)