aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr47744-2.c
diff options
context:
space:
mode:
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.c40
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;
+ }
+}