Commit 36e783e3 by Mikael Morin

trans-array.c (gfc_trans_array_bound_check, [...]): Rename the former to the latter.

	* trans-array.c (gfc_trans_array_bound_check,
	trans_array_bound_check): Rename the former to the latter.
	Replace descriptor argument with ss argument.  Get descriptor from ss.
	(gfc_conv_array_index_offset, conv_array_index_offset): Rename the
	former to the latter.  Update call to trans_array_bound_check.
	Replace info argument with ss argument.  Get info from ss.
	(gfc_conv_scalarized_array_ref): Update call to conv_array_index_offset.
	(add_array_offset): Ditto

From-SVN: r180857
parent a13d9afe
2011-11-03 Mikael Morin <mikael@gcc.gnu.org> 2011-11-03 Mikael Morin <mikael@gcc.gnu.org>
* trans-array.c (gfc_trans_array_bound_check,
trans_array_bound_check): Rename the former to the latter.
Replace descriptor argument with ss argument. Get descriptor from ss.
(gfc_conv_array_index_offset, conv_array_index_offset): Rename the
former to the latter. Update call to trans_array_bound_check.
Replace info argument with ss argument. Get info from ss.
(gfc_conv_scalarized_array_ref): Update call to conv_array_index_offset.
(add_array_offset): Ditto
2011-11-03 Mikael Morin <mikael@gcc.gnu.org>
* trans-array.c (gfc_trans_constant_array_constructor, * trans-array.c (gfc_trans_constant_array_constructor,
trans_constant_array_constructor): Rename the former to the latter. trans_constant_array_constructor): Rename the former to the latter.
Don't set the rank of the temporary for the loop. Remove then unused Don't set the rank of the temporary for the loop. Remove then unused
......
...@@ -2426,17 +2426,20 @@ gfc_conv_array_ubound (tree descriptor, int dim) ...@@ -2426,17 +2426,20 @@ gfc_conv_array_ubound (tree descriptor, int dim)
/* Generate code to perform an array index bound check. */ /* Generate code to perform an array index bound check. */
static tree static tree
gfc_trans_array_bound_check (gfc_se * se, tree descriptor, tree index, int n, trans_array_bound_check (gfc_se * se, gfc_ss *ss, tree index, int n,
locus * where, bool check_upper) locus * where, bool check_upper)
{ {
tree fault; tree fault;
tree tmp_lo, tmp_up; tree tmp_lo, tmp_up;
tree descriptor;
char *msg; char *msg;
const char * name = NULL; const char * name = NULL;
if (!(gfc_option.rtcheck & GFC_RTCHECK_BOUNDS)) if (!(gfc_option.rtcheck & GFC_RTCHECK_BOUNDS))
return index; return index;
descriptor = ss->data.info.descriptor;
index = gfc_evaluate_now (index, &se->pre); index = gfc_evaluate_now (index, &se->pre);
/* We find a name for the error message. */ /* We find a name for the error message. */
...@@ -2521,13 +2524,16 @@ gfc_trans_array_bound_check (gfc_se * se, tree descriptor, tree index, int n, ...@@ -2521,13 +2524,16 @@ gfc_trans_array_bound_check (gfc_se * se, tree descriptor, tree index, int n,
DIM is the array dimension, I is the loop dimension. */ DIM is the array dimension, I is the loop dimension. */
static tree static tree
gfc_conv_array_index_offset (gfc_se * se, gfc_ss_info * info, int dim, int i, conv_array_index_offset (gfc_se * se, gfc_ss * ss, int dim, int i,
gfc_array_ref * ar, tree stride) gfc_array_ref * ar, tree stride)
{ {
gfc_ss_info *info;
tree index; tree index;
tree desc; tree desc;
tree data; tree data;
info = &ss->data.info;
/* Get the index into the array for this dimension. */ /* Get the index into the array for this dimension. */
if (ar) if (ar)
{ {
...@@ -2544,10 +2550,9 @@ gfc_conv_array_index_offset (gfc_se * se, gfc_ss_info * info, int dim, int i, ...@@ -2544,10 +2550,9 @@ gfc_conv_array_index_offset (gfc_se * se, gfc_ss_info * info, int dim, int i,
/* We've already translated this value outside the loop. */ /* We've already translated this value outside the loop. */
index = info->subscript[dim]->data.scalar.expr; index = info->subscript[dim]->data.scalar.expr;
index = gfc_trans_array_bound_check (se, info->descriptor, index = trans_array_bound_check (se, ss, index, dim, &ar->where,
index, dim, &ar->where, ar->as->type != AS_ASSUMED_SIZE
ar->as->type != AS_ASSUMED_SIZE || dim < ar->dimen - 1);
|| dim < ar->dimen - 1);
break; break;
case DIMEN_VECTOR: case DIMEN_VECTOR:
...@@ -2574,10 +2579,9 @@ gfc_conv_array_index_offset (gfc_se * se, gfc_ss_info * info, int dim, int i, ...@@ -2574,10 +2579,9 @@ gfc_conv_array_index_offset (gfc_se * se, gfc_ss_info * info, int dim, int i,
index = fold_convert (gfc_array_index_type, index); index = fold_convert (gfc_array_index_type, index);
/* Do any bounds checking on the final info->descriptor index. */ /* Do any bounds checking on the final info->descriptor index. */
index = gfc_trans_array_bound_check (se, info->descriptor, index = trans_array_bound_check (se, ss, index, dim, &ar->where,
index, dim, &ar->where, ar->as->type != AS_ASSUMED_SIZE
ar->as->type != AS_ASSUMED_SIZE || dim < ar->dimen - 1);
|| dim < ar->dimen - 1);
break; break;
case DIMEN_RANGE: case DIMEN_RANGE:
...@@ -2648,7 +2652,7 @@ gfc_conv_scalarized_array_ref (gfc_se * se, gfc_array_ref * ar) ...@@ -2648,7 +2652,7 @@ gfc_conv_scalarized_array_ref (gfc_se * se, gfc_array_ref * ar)
else else
n = 0; n = 0;
index = gfc_conv_array_index_offset (se, info, info->dim[n], n, ar, index = conv_array_index_offset (se, se->ss, info->dim[n], n, ar,
info->stride0); info->stride0);
/* Add the offset for this dimension to the stored offset for all other /* Add the offset for this dimension to the stored offset for all other
dimensions. */ dimensions. */
...@@ -2843,8 +2847,7 @@ add_array_offset (stmtblock_t *pblock, gfc_loopinfo *loop, gfc_ss *ss, ...@@ -2843,8 +2847,7 @@ add_array_offset (stmtblock_t *pblock, gfc_loopinfo *loop, gfc_ss *ss,
se.loop = loop; se.loop = loop;
se.expr = info->descriptor; se.expr = info->descriptor;
stride = gfc_conv_array_stride (info->descriptor, array_dim); stride = gfc_conv_array_stride (info->descriptor, array_dim);
index = gfc_conv_array_index_offset (&se, info, array_dim, loop_dim, ar, index = conv_array_index_offset (&se, ss, array_dim, loop_dim, ar, stride);
stride);
gfc_add_block_to_block (pblock, &se.pre); gfc_add_block_to_block (pblock, &se.pre);
info->offset = fold_build2_loc (input_location, PLUS_EXPR, info->offset = fold_build2_loc (input_location, PLUS_EXPR,
......
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