From 7a157266876058eee921323240e4bfd7e5a84fba Mon Sep 17 00:00:00 2001 From: Janne Blomqvist Date: Wed, 31 Jan 2018 16:16:22 +0200 Subject: Use pointer sized array indices. Using pointer sized variables (e.g. size_t / ptrdiff_t) when the variables are used as array indices allows accessing larger arrays, and can be a slight performance improvement due to no need for sign or zero extending, or masking. Regtested on x86_64-pc-linux-gnu. libgfortran/ChangeLog: 2018-01-31 Janne Blomqvist * generated/cshift1_16.c (cshift1): Regenerated. * generated/cshift1_4.c (cshift1): Regenerated. * generated/cshift1_8.c (cshift1): Regenerated. * generated/eoshift1_16.c (eoshift1): Regenerated. * generated/eoshift1_4.c (eoshift1): Regenerated. * generated/eoshift1_8.c (eoshift1): Regenerated. * generated/eoshift3_16.c (eoshift3): Regenerated. * generated/eoshift3_4.c (eoshift3): Regenerated. * generated/eoshift3_8.c (eoshift3): Regenerated. * generated/in_pack_c10.c (internal_pack_c10): Regenerated. * generated/in_pack_c16.c (internal_pack_c16): Regenerated. * generated/in_pack_c4.c (internal_pack_c4): Regenerated. * generated/in_pack_c8.c (internal_pack_c8): Regenerated. * generated/in_pack_i1.c (internal_pack_1): Regenerated. * generated/in_pack_i16.c (internal_pack_16): Regenerated. * generated/in_pack_i2.c (internal_pack_2): Regenerated. * generated/in_pack_i4.c (internal_pack_4): Regenerated. * generated/in_pack_i8.c (internal_pack_8): Regenerated. * generated/in_pack_r10.c (internal_pack_r10): Regenerated. * generated/in_pack_r16.c (internal_pack_r16): Regenerated. * generated/in_pack_r4.c (internal_pack_r4): Regenerated. * generated/in_pack_r8.c (internal_pack_r8): Regenerated. * generated/in_unpack_c10.c (internal_unpack_c10): Regenerated. * generated/in_unpack_c16.c (internal_unpack_c16): Regenerated. * generated/in_unpack_c4.c (internal_unpack_c4): Regenerated. * generated/in_unpack_c8.c (internal_unpack_c8): Regenerated. * generated/in_unpack_i1.c (internal_unpack_1): Regenerated. * generated/in_unpack_i16.c (internal_unpack_16): Regenerated. * generated/in_unpack_i2.c (internal_unpack_2): Regenerated. * generated/in_unpack_i4.c (internal_unpack_4): Regenerated. * generated/in_unpack_i8.c (internal_unpack_8): Regenerated. * generated/in_unpack_r10.c (internal_unpack_r10): Regenerated. * generated/in_unpack_r16.c (internal_unpack_r16): Regenerated. * generated/in_unpack_r4.c (internal_unpack_r4): Regenerated. * generated/in_unpack_r8.c (internal_unpack_r8): Regenerated. * generated/reshape_c10.c (reshape_c10): Regenerated. * generated/reshape_c16.c (reshape_c16): Regenerated. * generated/reshape_c4.c (reshape_c4): Regenerated. * generated/reshape_c8.c (reshape_c8): Regenerated. * generated/reshape_i16.c (reshape_16): Regenerated. * generated/reshape_i4.c (reshape_4): Regenerated. * generated/reshape_i8.c (reshape_8): Regenerated. * generated/reshape_r10.c (reshape_r10): Regenerated. * generated/reshape_r16.c (reshape_r16): Regenerated. * generated/reshape_r4.c (reshape_r4): Regenerated. * generated/reshape_r8.c (reshape_r8): Regenerated. * generated/shape_i1.c (shape_1): Regenerated. * generated/shape_i16.c (shape_16): Regenerated. * generated/shape_i2.c (shape_2): Regenerated. * generated/shape_i4.c (shape_4): Regenerated. * generated/shape_i8.c (shape_8): Regenerated. * generated/spread_c10.c (spread_scalar_c10): Regenerated. * generated/spread_c16.c (spread_scalar_c16): Regenerated. * generated/spread_c4.c (spread_scalar_c4): Regenerated. * generated/spread_c8.c (spread_scalar_c8): Regenerated. * generated/spread_i1.c (spread_scalar_i1): Regenerated. * generated/spread_i16.c (spread_scalar_i16): Regenerated. * generated/spread_i2.c (spread_scalar_i2): Regenerated. * generated/spread_i4.c (spread_scalar_i4): Regenerated. * generated/spread_i8.c (spread_scalar_i8): Regenerated. * generated/spread_r10.c (spread_scalar_r10): Regenerated. * generated/spread_r16.c (spread_scalar_r16): Regenerated. * generated/spread_r4.c (spread_scalar_r4): Regenerated. * generated/spread_r8.c (spread_scalar_r8): Regenerated. * intrinsics/random.c (jump): Use size_t for array index in loop. (getosrandom): Likewise. (arandom_r4): Make n an index_type. (arandom_r8): Likewise. (arandom_r10): Likewise. (arandom_r16): Likewise. (scramble_seed): Use size_t for array index in loop. * m4/cshift1.m4: Make i an index_type. * m4/eoshift1.m4: Likewise. * m4/eoshift3.m4: Likewise. * m4/in_pack.m4: Make n an index_type. * m4/in_unpack.m4: Likewise. * m4/reshape.m4: Make n and dim index_type's. * m4/shape.m4: Make n an index_type. * m4/spread.m4: Likewise, use index_type argument rather than copying to int. * runtime/bounds.c (bounds_ifunction_return): Make n an index_type. * runtime/in_pack_generic.c (internal_pack): Likewise. * runtime/in_unpack_generic.c (internal_unpack): Make n and size index_type's. From-SVN: r257234 --- libgfortran/generated/reshape_r4.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) (limited to 'libgfortran/generated/reshape_r4.c') diff --git a/libgfortran/generated/reshape_r4.c b/libgfortran/generated/reshape_r4.c index b0f27dc..7f419b1 100644 --- a/libgfortran/generated/reshape_r4.c +++ b/libgfortran/generated/reshape_r4.c @@ -72,8 +72,6 @@ reshape_r4 (gfc_array_r4 * const restrict ret, const GFC_REAL_4 *pptr; const GFC_REAL_4 *src; - int n; - int dim; int sempty, pempty, shape_empty; index_type shape_data[GFC_MAX_DIMENSIONS]; @@ -87,7 +85,7 @@ reshape_r4 (gfc_array_r4 * const restrict ret, shape_empty = 0; - for (n = 0; n < rdim; n++) + for (index_type n = 0; n < rdim; n++) { shape_data[n] = shape->base_addr[n * GFC_DESCRIPTOR_STRIDE(shape,0)]; if (shape_data[n] <= 0) @@ -102,7 +100,7 @@ reshape_r4 (gfc_array_r4 * const restrict ret, index_type alloc_size; rs = 1; - for (n = 0; n < rdim; n++) + for (index_type n = 0; n < rdim; n++) { rex = shape_data[n]; @@ -129,7 +127,7 @@ reshape_r4 (gfc_array_r4 * const restrict ret, pdim = GFC_DESCRIPTOR_RANK (pad); psize = 1; pempty = 0; - for (n = 0; n < pdim; n++) + for (index_type n = 0; n < pdim; n++) { pcount[n] = 0; pstride[n] = GFC_DESCRIPTOR_STRIDE(pad,n); @@ -160,7 +158,7 @@ reshape_r4 (gfc_array_r4 * const restrict ret, index_type ret_extent, source_extent; rs = 1; - for (n = 0; n < rdim; n++) + for (index_type n = 0; n < rdim; n++) { rs *= shape_data[n]; ret_extent = GFC_DESCRIPTOR_EXTENT(ret,n); @@ -173,7 +171,7 @@ reshape_r4 (gfc_array_r4 * const restrict ret, source_extent = 1; sdim = GFC_DESCRIPTOR_RANK (source); - for (n = 0; n < sdim; n++) + for (index_type n = 0; n < sdim; n++) { index_type se; se = GFC_DESCRIPTOR_EXTENT(source,n); @@ -190,10 +188,10 @@ reshape_r4 (gfc_array_r4 * const restrict ret, int seen[GFC_MAX_DIMENSIONS]; index_type v; - for (n = 0; n < rdim; n++) + for (index_type n = 0; n < rdim; n++) seen[n] = 0; - for (n = 0; n < rdim; n++) + for (index_type n = 0; n < rdim; n++) { v = order->base_addr[n * GFC_DESCRIPTOR_STRIDE(order,0)] - 1; @@ -211,8 +209,9 @@ reshape_r4 (gfc_array_r4 * const restrict ret, } rsize = 1; - for (n = 0; n < rdim; n++) + for (index_type n = 0; n < rdim; n++) { + index_type dim; if (order) dim = order->base_addr[n * GFC_DESCRIPTOR_STRIDE(order,0)] - 1; else @@ -243,7 +242,7 @@ reshape_r4 (gfc_array_r4 * const restrict ret, ssize = 1; sempty = 0; - for (n = 0; n < sdim; n++) + for (index_type n = 0; n < sdim; n++) { scount[n] = 0; sstride[n] = GFC_DESCRIPTOR_STRIDE(source,n); @@ -283,7 +282,7 @@ reshape_r4 (gfc_array_r4 * const restrict ret, src = pptr; sptr = pptr; sdim = pdim; - for (dim = 0; dim < pdim; dim++) + for (index_type dim = 0; dim < pdim; dim++) { scount[dim] = pcount[dim]; sextent[dim] = pextent[dim]; @@ -303,7 +302,7 @@ reshape_r4 (gfc_array_r4 * const restrict ret, scount[0]++; /* Advance to the next destination element. */ - n = 0; + index_type n = 0; while (rcount[n] == rextent[n]) { /* When we get to the end of a dimension, reset it and increment @@ -343,7 +342,7 @@ reshape_r4 (gfc_array_r4 * const restrict ret, /* Switch to the pad array. */ sptr = NULL; sdim = pdim; - for (dim = 0; dim < pdim; dim++) + for (index_type dim = 0; dim < pdim; dim++) { scount[dim] = pcount[dim]; sextent[dim] = pextent[dim]; -- cgit v1.1