OSDN Git Service

2007-05-28 Razya Ladelsky <razya@il.ibm.com>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / matrix / matrix-2.c
1 /* { dg-do compile } */
2 /* { dg-do run } */
3
4
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include <math.h>
8 #include <string.h>
9
10 void mem_init (void);
11 int ARCHnodes, ARCHnodes1;
12 int ***vel;
13
14 /* The last dimension of VEL escapes because of
15    the assignment : vel[1][1] =...
16    Only the two external dimensions are flattened.  */
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       printf ("%x\n",vel[i][j]);
46       /*if (i!=1 || j!=1)*/
47       /*if (i==1 && j==1)
48         continue;
49       else
50         free (vel[i][j]);*/
51
52   for (i = 0; i < ARCHnodes; i++)
53     free (vel[i]);
54
55   free (vel);
56   return 0;
57 }
58
59 /*--------------------------------------------------------------------------*/
60 /* Dynamic memory allocations and initializations                           */
61
62 void
63 mem_init (void)
64 {
65
66   int i, j, k,d;
67  
68   d = 0;
69   vel = (int ***) malloc (ARCHnodes * sizeof (int **));
70
71   for (i = 0; i < ARCHnodes; i++)
72     {
73       vel[i] = (int **) malloc (3 * sizeof (int *));
74       if (vel[i] == (int **) NULL)
75         {
76           fprintf (stderr, "malloc failed for vel[%d]\n", i);
77           fflush (stderr);
78           exit (0);
79         }
80     }
81   for (i = 0; i < ARCHnodes; i++)
82     {
83       for (j = 0; j < 3; j++)
84         {
85           vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int));
86           printf ("%x %d %d\n",vel[i][j], ARCHnodes1, sizeof (int));
87         }
88     }
89    for (i = 0; i < ARCHnodes; i++)
90     {
91       for (j = 0; j < 3; j++)
92         {
93           printf ("%x\n",vel[i][j]);
94         }
95     }
96
97   printf ("again:\n\n");
98   for (i = 0; i < ARCHnodes; i++)
99     {
100       for (j = 0; j < 3; j++)
101         {
102           printf ("%x\n",vel[i][j]);
103           /*for (k = 0; k < ARCHnodes1; k++)
104             {
105               vel[i][j][k] = d;
106               d++;
107             }*/
108         }
109     }
110   /*vel[1][1] = vel[0][1];*/
111 }
112
113 /*--------------------------------------------------------------------------*/
114 /* { dg-final { scan-ipa-dump-times "Flattened 2 dimensions" 1 "matrix-reorg"  } } */
115 /* { dg-final { cleanup-ipa-dump "matrix-reorg" } } */