1 /* { dg-do run } */
2 /* { dg-options "-fwhole-program" } */
3 
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <math.h>
7 #include <string.h>
8 
9 void mem_init (void);
10 int ARCHnodes, ARCHnodes1;
11 int ***vel;
12 
13 /* The whole matrix VEL is flattened (3 dimensions).  */
14 /*--------------------------------------------------------------------------*/
15 
16 int
main(int argc,char ** argv)17 main (int argc, char **argv)
18 {
19   int i, j, k, id;
20 
21   ARCHnodes = 2;
22   ARCHnodes1 = 4;
23 
24 /* Dynamic memory allocations and initializations */
25   mem_init ();
26 
27   for (i = 0; i < ARCHnodes; i++)
28     {
29       for (j = 0; j < 3; j++)
30 	{
31 	  for (k = 0; k < ARCHnodes1; k++)
32 	    printf ("[%d][%d][%d]=%d ", i, j, k, vel[i][j][k]);
33 	  printf ("\n");
34 	}
35       printf ("\n");
36     }
37   for (i = 0; i < ARCHnodes; i++)
38     for (j = 0; j < 3; j++)
39       free (vel[i][j]);
40 
41   for (i = 0; i < ARCHnodes; i++)
42     free (vel[i]);
43 
44   free (vel);
45   return 0;
46 }
47 
48 /*--------------------------------------------------------------------------*/
49 /* Dynamic memory allocations and initializations                           */
50 
51 void
mem_init(void)52 mem_init (void)
53 {
54 
55   int i, j, k,d;
56 
57   d = 0;
58   vel = (int ***) malloc (ARCHnodes * sizeof (int **));
59 
60   for (i = 0; i < ARCHnodes; i++)
61     {
62       vel[i] = (int **) malloc (3 * sizeof (int *));
63       if (vel[i] == (int **) NULL)
64 	{
65 	  printf ("malloc failed for vel[%d]\n", i);
66 	  exit (0);
67 	}
68     }
69   for (i = 0; i < ARCHnodes; i++)
70     {
71       for (j = 0; j < 3; j++)
72 	{
73 	  vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int));
74 	}
75     }
76   for (i = 0; i < ARCHnodes; i++)
77     {
78       for (j = 0; j < 3; j++)
79 	{
80 	  for (k = 0; k < ARCHnodes1; k++)
81 	    {
82 	      vel[i][j][k] = d;
83 	      d++;
84 	    }
85 	}
86     }
87 }
88 
89 /*--------------------------------------------------------------------------*/
90