diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.dg/torture/pr47744-2.c')
-rw-r--r-- | gcc-4.9/gcc/testsuite/gcc.dg/torture/pr47744-2.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr47744-2.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr47744-2.c new file mode 100644 index 000000000..82f6151cb --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr47744-2.c @@ -0,0 +1,40 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target int128 } */ +/* { dg-options "-std=gnu99" } */ + +typedef long unsigned int size_t; +typedef long int ssize_t; +typedef ssize_t index_type; +typedef __int128_t GFC_INTEGER_16; +typedef struct descriptor_dimension +{ + index_type _stride; + index_type _lbound; + index_type _ubound; +} +descriptor_dimension; +typedef struct { GFC_INTEGER_16 *data; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_i16; +void +matmul_i16 (gfc_array_i16 * const restrict retarray, + gfc_array_i16 * const restrict a, + GFC_INTEGER_16 bbase_yn) +{ + GFC_INTEGER_16 * restrict dest; + index_type rxstride, rystride; + index_type x, y, n, count, xcount; + GFC_INTEGER_16 * restrict dest_y; + GFC_INTEGER_16 s; + const GFC_INTEGER_16 * restrict abase_n; + rxstride = ((retarray)->dim[0]._stride); + rystride = ((retarray)->dim[1]._stride); + xcount = ((a)->dim[0]._ubound + 1 - (a)->dim[0]._lbound); + dest = retarray->data; + dest_y = &dest[y*rystride]; + for (x = 0; x < xcount; x++) + dest_y[x] += abase_n[x] * bbase_yn; + for (x = 0; x < xcount; x++) + { + for (n = 0; n < count; n++) + dest_y[x*rxstride] = (GFC_INTEGER_16) 0; + } +} |