Commit ecc54e6e by Roger Sayle Committed by Roger Sayle

trans-array.c (gfc_conv_array_index_offset): Avoid multiplying index by one, or adding zero to it.


	* trans-array.c (gfc_conv_array_index_offset): Avoid multiplying
	index by one, or adding zero to it.

From-SVN: r120011
parent 79f99d42
2006-12-18 Roger Sayle <roger@eyesopen.com>
* trans-array.c (gfc_conv_array_index_offset): Avoid multiplying
index by one, or adding zero to it.
2006-12-17 Roger Sayle <roger@eyesopen.com> 2006-12-17 Roger Sayle <roger@eyesopen.com>
PR fortran/30207 PR fortran/30207
......
...@@ -1985,10 +1985,12 @@ gfc_conv_array_index_offset (gfc_se * se, gfc_ss_info * info, int dim, int i, ...@@ -1985,10 +1985,12 @@ gfc_conv_array_index_offset (gfc_se * se, gfc_ss_info * info, int dim, int i,
/* Multiply the loop variable by the stride and delta. */ /* Multiply the loop variable by the stride and delta. */
index = se->loop->loopvar[i]; index = se->loop->loopvar[i];
index = fold_build2 (MULT_EXPR, gfc_array_index_type, index, if (!integer_onep (info->stride[i]))
info->stride[i]); index = fold_build2 (MULT_EXPR, gfc_array_index_type, index,
index = fold_build2 (PLUS_EXPR, gfc_array_index_type, index, info->stride[i]);
info->delta[i]); if (!integer_zerop (info->delta[i]))
index = fold_build2 (PLUS_EXPR, gfc_array_index_type, index,
info->delta[i]);
break; break;
default: default:
...@@ -2006,7 +2008,8 @@ gfc_conv_array_index_offset (gfc_se * se, gfc_ss_info * info, int dim, int i, ...@@ -2006,7 +2008,8 @@ gfc_conv_array_index_offset (gfc_se * se, gfc_ss_info * info, int dim, int i,
} }
/* Multiply by the stride. */ /* Multiply by the stride. */
index = fold_build2 (MULT_EXPR, gfc_array_index_type, index, stride); if (!integer_onep (stride))
index = fold_build2 (MULT_EXPR, gfc_array_index_type, index, stride);
return index; return index;
} }
......
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