gfc_ss::data::scalar into newly created union gfc_ss_info::data,
and rename subfield expr to value.
* trans-array.c (gfc_add_loop_ss_code, gfc_conv_array_index_offset,
gfc_conv_expr_descriptor): Update reference chains.
* trans-const.c (gfc_conv_constant): Ditto.
* trans-expr.c (gfc_conv_expr): Ditto.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180870
138bc75d-0d04-0410-961f-
82ee72b054a4
2011-11-03 Mikael Morin <mikael@gcc.gnu.org>
+ * trans.h (struct gfc_ss, struct gfc_ss_info): Move member struct
+ gfc_ss::data::scalar into newly created union gfc_ss_info::data,
+ and rename subfield expr to value.
+ * trans-array.c (gfc_add_loop_ss_code, gfc_conv_array_index_offset,
+ gfc_conv_expr_descriptor): Update reference chains.
+ * trans-const.c (gfc_conv_constant): Ditto.
+ * trans-expr.c (gfc_conv_expr): Ditto.
+
+2011-11-03 Mikael Morin <mikael@gcc.gnu.org>
+
* trans.h (struct gfc_ss, struct gfc_ss_info): Move field
string_length from the former struct to the latter.
* trans-array.c
else
gfc_add_block_to_block (&loop->post, &se.post);
- ss->data.scalar.expr = se.expr;
+ ss_info->data.scalar.value = se.expr;
ss_info->string_length = se.string_length;
break;
gfc_add_block_to_block (&loop->pre, &se.pre);
gfc_add_block_to_block (&loop->post, &se.post);
- ss->data.scalar.expr = gfc_evaluate_now (se.expr, &loop->pre);
+ ss_info->data.scalar.value = gfc_evaluate_now (se.expr, &loop->pre);
ss_info->string_length = se.string_length;
break;
gcc_assert (info->subscript[dim]
&& info->subscript[dim]->info->type == GFC_SS_SCALAR);
/* We've already translated this value outside the loop. */
- index = info->subscript[dim]->data.scalar.expr;
+ index = info->subscript[dim]->info->data.scalar.value;
index = trans_array_bound_check (se, ss, index, dim, &ar->where,
ar->as->type != AS_ASSUMED_SIZE
{
gcc_assert (info->subscript[n]
&& info->subscript[n]->info->type == GFC_SS_SCALAR);
- start = info->subscript[n]->data.scalar.expr;
+ start = info->subscript[n]->info->data.scalar.value;
}
else
{
gcc_assert (ss_info->type == GFC_SS_SCALAR);
gcc_assert (ss_info->expr == expr);
- se->expr = se->ss->data.scalar.expr;
+ se->expr = ss_info->data.scalar.value;
se->string_length = ss_info->string_length;
gfc_advance_se_ss_chain (se);
return;
ss_info = ss->info;
/* Substitute a scalar expression evaluated outside the scalarization
loop. */
- se->expr = se->ss->data.scalar.expr;
+ se->expr = ss_info->data.scalar.value;
if (ss_info->type == GFC_SS_REFERENCE)
se->expr = gfc_build_addr_expr (NULL_TREE, se->expr);
se->string_length = ss_info->string_length;
gfc_ss_type type;
gfc_expr *expr;
tree string_length;
+
+ union
+ {
+ /* If type is GFC_SS_SCALAR or GFC_SS_REFERENCE. */
+ struct
+ {
+ tree value;
+ }
+ scalar;
+ }
+ data;
}
gfc_ss_info;
union
{
- /* If type is GFC_SS_SCALAR or GFC_SS_REFERENCE. */
- struct
- {
- tree expr;
- }
- scalar;
-
/* GFC_SS_TEMP. */
struct
{