Rebase.
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / matrix-1.c
blob1b88599bdcd16621137b0272f1323e16c05f7c89
1 /* { dg-do run } */
2 /* { dg-options "-fwhole-program" } */
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <math.h>
7 #include <string.h>
9 void mem_init (void);
10 int ARCHnodes, ARCHnodes1;
11 int ***vel;
13 /* The whole matrix VEL is flattened (3 dimensions). */
14 /*--------------------------------------------------------------------------*/
16 int
17 main (int argc, char **argv)
19 int i, j, k, id;
21 ARCHnodes = 2;
22 ARCHnodes1 = 4;
24 /* Dynamic memory allocations and initializations */
25 mem_init ();
27 for (i = 0; i < ARCHnodes; i++)
29 for (j = 0; j < 3; j++)
31 for (k = 0; k < ARCHnodes1; k++)
32 printf ("[%d][%d][%d]=%d ", i, j, k, vel[i][j][k]);
33 printf ("\n");
35 printf ("\n");
37 for (i = 0; i < ARCHnodes; i++)
38 for (j = 0; j < 3; j++)
39 free (vel[i][j]);
41 for (i = 0; i < ARCHnodes; i++)
42 free (vel[i]);
44 free (vel);
45 return 0;
48 /*--------------------------------------------------------------------------*/
49 /* Dynamic memory allocations and initializations */
51 void
52 mem_init (void)
55 int i, j, k,d;
57 d = 0;
58 vel = (int ***) malloc (ARCHnodes * sizeof (int **));
60 for (i = 0; i < ARCHnodes; i++)
62 vel[i] = (int **) malloc (3 * sizeof (int *));
63 if (vel[i] == (int **) NULL)
65 fprintf (stderr, "malloc failed for vel[%d]\n", i);
66 fflush (stderr);
67 exit (0);
70 for (i = 0; i < ARCHnodes; i++)
72 for (j = 0; j < 3; j++)
74 vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int));
77 for (i = 0; i < ARCHnodes; i++)
79 for (j = 0; j < 3; j++)
81 for (k = 0; k < ARCHnodes1; k++)
83 vel[i][j][k] = d;
84 d++;
90 /*--------------------------------------------------------------------------*/