Commit 42d0058e by Mikael Morin

trans.h (struct gfc_ss, [...]): Move field gfc_ss::where into gfc_ss_info.

	* 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.

From-SVN: r180877
parent 7a412892
2011-11-03 Mikael Morin <mikael@gcc.gnu.org> 2011-11-03 Mikael Morin <mikael@gcc.gnu.org>
* trans.h (struct gfc_ss, struct gfc_ss_info): Move field * 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. gfc_ss::useflags into gfc_ss_info.
* trans-array.c (gfc_mark_ss_chain_used, gfc_trans_preloop_setup, * trans-array.c (gfc_mark_ss_chain_used, gfc_trans_preloop_setup,
gfc_trans_scalarizing_loops, gfc_trans_scalarized_boundary): gfc_trans_scalarizing_loops, gfc_trans_scalarized_boundary):
......
...@@ -2203,7 +2203,7 @@ gfc_add_loop_ss_code (gfc_loopinfo * loop, gfc_ss * ss, bool subscript, ...@@ -2203,7 +2203,7 @@ gfc_add_loop_ss_code (gfc_loopinfo * loop, gfc_ss * ss, bool subscript,
scalarization loop, except for WHERE assignments. */ scalarization loop, except for WHERE assignments. */
if (subscript) if (subscript)
se.expr = convert(gfc_array_index_type, se.expr); 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); se.expr = gfc_evaluate_now (se.expr, &loop->pre);
gfc_add_block_to_block (&loop->pre, &se.post); gfc_add_block_to_block (&loop->pre, &se.post);
} }
......
...@@ -4062,7 +4062,7 @@ gfc_trans_where_assign (gfc_expr *expr1, gfc_expr *expr2, ...@@ -4062,7 +4062,7 @@ gfc_trans_where_assign (gfc_expr *expr1, gfc_expr *expr2,
{ {
/* The rhs is scalar. Add a ss for the expression. */ /* The rhs is scalar. Add a ss for the expression. */
rss = gfc_get_scalar_ss (gfc_ss_terminator, expr2); 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) ...@@ -4501,7 +4501,7 @@ gfc_trans_where_3 (gfc_code * cblock, gfc_code * eblock)
if (tsss == gfc_ss_terminator) if (tsss == gfc_ss_terminator)
{ {
tsss = gfc_get_scalar_ss (gfc_ss_terminator, tsrc); 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, tdss);
gfc_add_ss_to_loop (&loop, tsss); gfc_add_ss_to_loop (&loop, tsss);
...@@ -4516,7 +4516,7 @@ gfc_trans_where_3 (gfc_code * cblock, gfc_code * eblock) ...@@ -4516,7 +4516,7 @@ gfc_trans_where_3 (gfc_code * cblock, gfc_code * eblock)
if (esss == gfc_ss_terminator) if (esss == gfc_ss_terminator)
{ {
esss = gfc_get_scalar_ss (gfc_ss_terminator, esrc); 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, edss);
gfc_add_ss_to_loop (&loop, esss); gfc_add_ss_to_loop (&loop, esss);
......
...@@ -214,6 +214,9 @@ typedef struct gfc_ss_info ...@@ -214,6 +214,9 @@ typedef struct gfc_ss_info
loops the terms appear in. This will be 1 for the RHS expressions, 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. */ 2 for the LHS expressions, and 3(=1|2) for the temporary. */
unsigned useflags:2; 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 ...@@ -242,9 +245,7 @@ typedef struct gfc_ss
struct gfc_ss *loop_chain; struct gfc_ss *loop_chain;
struct gfc_ss *next; struct gfc_ss *next;
/* The bit 'where' suppresses precalculation of scalars in WHERE assignments. unsigned is_alloc_lhs:1;
*/
unsigned where:1, is_alloc_lhs:1;
} }
gfc_ss; gfc_ss;
#define gfc_get_ss() XCNEW (gfc_ss) #define gfc_get_ss() XCNEW (gfc_ss)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment