PR tree-optimization/83369 - Missing diagnostics during inlining
[official-gcc.git] / gcc / testsuite / gcc.dg / loop-unswitch-4.c
blob320a1cdb50758842623df90d5d1ca27d37697d46
1 /* { dg-do run } */
2 /* { dg-options "-O2 -funswitch-loops" } */
4 #include <stdlib.h>
5 __attribute__ ((noinline))
6 void foo (float **a, float **b, float *c, int n, int m, int l)
8 int i,j,k;
9 float s;
10 for (i=0; i<l; i++)
11 for (j=0; j<n; j++)
12 for (k=0; k<m; k++)
13 c[i] += a[i][k] * b[k][j];
16 int main()
18 const int N = 32;
19 float **ar1, **ar2;
20 float *res;
21 int i, j;
22 ar1 = (float **)malloc (N * sizeof (float*));
23 ar2 = (float **)malloc (N * sizeof (float*));
24 res = (float *)malloc( N * sizeof (float));
25 for (i=0; i<N; i++)
27 ar1[i] = (float*)malloc (N * sizeof (float));
28 ar2[i] = (float*)malloc (N * sizeof (float));
30 for (i=0; i<N; i++)
32 for (j=0; j<N; j++)
34 ar1[i][j] = 2.0f;
35 ar2[i][j] = 1.5f;
37 res[i] = 0.0f;
39 foo (ar1, ar2, res, N, N, N);
40 for (i=0; i<N; i++)
41 if (res[i] != 3072.0f)
42 abort();
43 for (i=0; i<N; i++)
44 res[i] = 0.0f;
45 foo (ar1, ar2, res, N, 0, N);
46 for (i=0; i<N; i++)
47 if (res[i] != 0.0f)
48 abort();
50 return 0;