Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Unified Diff: gcc/libgfortran/m4/cshift1.m4

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gcc/libgfortran/io/write_float.def ('k') | gcc/libgfortran/m4/matmul.m4 » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gcc/libgfortran/m4/cshift1.m4
diff --git a/gcc/libgfortran/m4/cshift1.m4 b/gcc/libgfortran/m4/cshift1.m4
index 3c5ff5e66189cbb85412ab456e9b2d92032a661e..49a4f73404a6dda89c198911cca078e32e0df641 100644
--- a/gcc/libgfortran/m4/cshift1.m4
+++ b/gcc/libgfortran/m4/cshift1.m4
@@ -36,8 +36,7 @@ static void
cshift1 (gfc_array_char * const restrict ret,
const gfc_array_char * const restrict array,
const 'atype` * const restrict h,
- const 'atype_name` * const restrict pwhich,
- index_type size)
+ const 'atype_name` * const restrict pwhich)
{
/* r.* indicates the return array. */
index_type rstride[GFC_MAX_DIMENSIONS];
@@ -64,6 +63,7 @@ cshift1 (gfc_array_char * const restrict ret,
int which;
'atype_name` sh;
index_type arraysize;
+ index_type size;
if (pwhich)
which = *pwhich - 1;
@@ -73,6 +73,8 @@ cshift1 (gfc_array_char * const restrict ret,
if (which < 0 || (which + 1) > GFC_DESCRIPTOR_RANK (array))
runtime_error ("Argument ''`DIM''` is out of range in call to ''`CSHIFT''`");
+ size = GFC_DESCRIPTOR_SIZE(array);
+
arraysize = size0 ((array_t *)array);
if (ret->data == NULL)
@@ -84,15 +86,30 @@ cshift1 (gfc_array_char * const restrict ret,
ret->dtype = array->dtype;
for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
{
- ret->dim[i].lbound = 0;
- ret->dim[i].ubound = array->dim[i].ubound - array->dim[i].lbound;
+ index_type ub, str;
+
+ ub = GFC_DESCRIPTOR_EXTENT(array,i) - 1;
if (i == 0)
- ret->dim[i].stride = 1;
+ str = 1;
else
- ret->dim[i].stride = (ret->dim[i-1].ubound + 1) * ret->dim[i-1].stride;
+ str = GFC_DESCRIPTOR_EXTENT(ret,i-1) *
+ GFC_DESCRIPTOR_STRIDE(ret,i-1);
+
+ GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
}
}
+ else if (unlikely (compile_options.bounds_check))
+ {
+ bounds_equal_extents ((array_t *) ret, (array_t *) array,
+ "return value", "CSHIFT");
+ }
+
+ if (unlikely (compile_options.bounds_check))
+ {
+ bounds_reduced_extents ((array_t *) h, (array_t *) array, which,
+ "SHIFT argument", "CSHIFT");
+ }
if (arraysize == 0)
return;
@@ -110,22 +127,22 @@ cshift1 (gfc_array_char * const restrict ret,
{
if (dim == which)
{
- roffset = ret->dim[dim].stride * size;
+ roffset = GFC_DESCRIPTOR_STRIDE_BYTES(ret,dim);
if (roffset == 0)
roffset = size;
- soffset = array->dim[dim].stride * size;
+ soffset = GFC_DESCRIPTOR_STRIDE_BYTES(array,dim);
if (soffset == 0)
soffset = size;
- len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
+ len = GFC_DESCRIPTOR_EXTENT(array,dim);
}
else
{
count[n] = 0;
- extent[n] = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
- rstride[n] = ret->dim[dim].stride * size;
- sstride[n] = array->dim[dim].stride * size;
+ extent[n] = GFC_DESCRIPTOR_EXTENT(array,dim);
+ rstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(ret,dim);
+ sstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(array,dim);
- hstride[n] = h->dim[n].stride;
+ hstride[n] = GFC_DESCRIPTOR_STRIDE(h,n);
n++;
}
}
@@ -211,7 +228,7 @@ cshift1_'atype_kind` (gfc_array_char * const restrict ret,
const 'atype` * const restrict h,
const 'atype_name` * const restrict pwhich)
{
- cshift1 (ret, array, h, pwhich, GFC_DESCRIPTOR_SIZE (array));
+ cshift1 (ret, array, h, pwhich);
}
@@ -229,9 +246,9 @@ cshift1_'atype_kind`_char (gfc_array_char * const restrict ret,
const gfc_array_char * const restrict array,
const 'atype` * const restrict h,
const 'atype_name` * const restrict pwhich,
- GFC_INTEGER_4 array_length)
+ GFC_INTEGER_4 array_length __attribute__((unused)))
{
- cshift1 (ret, array, h, pwhich, array_length);
+ cshift1 (ret, array, h, pwhich);
}
@@ -249,9 +266,9 @@ cshift1_'atype_kind`_char4 (gfc_array_char * const restrict ret,
const gfc_array_char * const restrict array,
const 'atype` * const restrict h,
const 'atype_name` * const restrict pwhich,
- GFC_INTEGER_4 array_length)
+ GFC_INTEGER_4 array_length __attribute__((unused)))
{
- cshift1 (ret, array, h, pwhich, array_length * sizeof (gfc_char4_t));
+ cshift1 (ret, array, h, pwhich);
}
#endif'
« no previous file with comments | « gcc/libgfortran/io/write_float.def ('k') | gcc/libgfortran/m4/matmul.m4 » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698