Rebase.
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / matrix-4.c
blob586443ce28733031c1aa91abda27fc4cc524d714
1 /* { dg-do compile } */
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <math.h>
6 #include <string.h>
8 void mem_init (void);
9 int ARCHnodes, ARCHnodes1;
10 int ***vel;
11 void just_a_call (int ****);
13 /* Address of VEL is taken.
14 It is not flattened. */
17 /*--------------------------------------------------------------------------*/
19 int
20 main (int argc, char **argv)
22 int i, j, k;
24 ARCHnodes = 2;
25 ARCHnodes1 = 4;
27 /* Dynamic memory allocations and initializations */
29 mem_init ();
31 for (i = 0; i < ARCHnodes; i++)
33 for (j = 0; j < 3; j++)
35 for (k = 0; k < ARCHnodes1; k++)
36 printf ("[%d][%d][%d]=%d ", i, j, k, vel[i][j][k]);
37 printf ("\n");
39 printf ("\n");
41 for (i = 0; i < ARCHnodes; i++)
42 for (j = 0; j < 3; j++)
43 free (vel[i][j]);
45 for (i = 0; i < ARCHnodes; i++)
46 free (vel[i]);
48 free (vel);
49 return 0;
52 /*--------------------------------------------------------------------------*/
53 /* Dynamic memory allocations and initializations */
55 void
56 mem_init (void)
59 int i, j, k,d;
61 d = 0;
62 vel = (int ***) malloc (ARCHnodes * sizeof (int **));
64 for (i = 0; i < ARCHnodes; i++)
66 vel[i] = (int **) malloc (3 * sizeof (int *));
67 if (vel[i] == (int **) NULL)
69 fprintf (stderr, "malloc failed for vel[%d]\n", i);
70 fflush (stderr);
71 exit (0);
74 for (i = 0; i < ARCHnodes; i++)
76 for (j = 0; j < 3; j++)
78 vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int));
81 for (i = 0; i < ARCHnodes; i++)
83 for (j = 0; j < 3; j++)
85 for (k = 0; k < ARCHnodes1; k++)
87 vel[i][j][k] = d;
88 d++;
92 just_a_call (&vel);
95 /*--------------------------------------------------------------------------*/