111
|
1 /* { dg-do compile } */
|
|
2
|
|
3 #include <stdio.h>
|
|
4 #include <stdlib.h>
|
|
5 #include <math.h>
|
|
6 #include <string.h>
|
|
7
|
|
8 void mem_init (void);
|
|
9 int ARCHnodes, ARCHnodes1;
|
|
10 int ***vel;
|
|
11 void just_a_call (int *);
|
|
12
|
|
13 /* The last dimension of VEL escapes because it was sent
|
|
14 as argument to just_a_call(). (external function)
|
|
15 Only the two external dimensions are flattened.
|
|
16 Run with -c. */
|
|
17
|
|
18
|
|
19 /*--------------------------------------------------------------------------*/
|
|
20
|
|
21 int
|
|
22 main (int argc, char **argv)
|
|
23 {
|
|
24 int i, j, k;
|
|
25
|
|
26 ARCHnodes = 2;
|
|
27 ARCHnodes1 = 4;
|
|
28
|
|
29 /* Dynamic memory allocations and initializations */
|
|
30
|
|
31 mem_init ();
|
|
32
|
|
33 for (i = 0; i < ARCHnodes; i++)
|
|
34 {
|
|
35 for (j = 0; j < 3; j++)
|
|
36 {
|
|
37 for (k = 0; k < ARCHnodes1; k++)
|
|
38 printf ("[%d][%d][%d]=%d ", i, j, k, vel[i][j][k]);
|
|
39 printf ("\n");
|
|
40 }
|
|
41 printf ("\n");
|
|
42 }
|
|
43 for (i = 0; i < ARCHnodes; i++)
|
|
44 for (j = 0; j < 3; j++)
|
|
45 free (vel[i][j]);
|
|
46
|
|
47 for (i = 0; i < ARCHnodes; i++)
|
|
48 free (vel[i]);
|
|
49
|
|
50 free (vel);
|
|
51 return 0;
|
|
52 }
|
|
53
|
|
54 /*--------------------------------------------------------------------------*/
|
|
55 /* Dynamic memory allocations and initializations */
|
|
56
|
|
57 void
|
|
58 mem_init (void)
|
|
59 {
|
|
60
|
|
61 int i, j, k,d;
|
|
62
|
|
63 d = 0;
|
|
64 vel = (int ***) malloc (ARCHnodes * sizeof (int **));
|
|
65
|
|
66 for (i = 0; i < ARCHnodes; i++)
|
|
67 {
|
|
68 vel[i] = (int **) malloc (3 * sizeof (int *));
|
|
69 if (vel[i] == (int **) NULL)
|
|
70 {
|
|
71 fprintf (stderr, "malloc failed for vel[%d]\n", i);
|
|
72 fflush (stderr);
|
|
73 exit (0);
|
|
74 }
|
|
75 }
|
|
76 for (i = 0; i < ARCHnodes; i++)
|
|
77 {
|
|
78 for (j = 0; j < 3; j++)
|
|
79 {
|
|
80 vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int));
|
|
81 }
|
|
82 }
|
|
83 for (i = 0; i < ARCHnodes; i++)
|
|
84 {
|
|
85 for (j = 0; j < 3; j++)
|
|
86 {
|
|
87 for (k = 0; k < ARCHnodes1; k++)
|
|
88 {
|
|
89 vel[i][j][k] = d;
|
|
90 d++;
|
|
91 }
|
|
92 }
|
|
93 }
|
|
94 just_a_call (vel[1][1]);
|
|
95 }
|
|
96
|
|
97 /*--------------------------------------------------------------------------*/
|