/* { dg-do compile } */
|
/* { dg-do compile } */
|
/* { dg-do run } */
|
/* { dg-do run } */
|
|
|
|
|
#include <stdio.h>
|
#include <stdio.h>
|
#include <stdlib.h>
|
#include <stdlib.h>
|
#include <math.h>
|
#include <math.h>
|
#include <string.h>
|
#include <string.h>
|
|
|
void mem_init (void);
|
void mem_init (void);
|
int ARCHnodes, ARCHnodes1;
|
int ARCHnodes, ARCHnodes1;
|
int ***vel;
|
int ***vel;
|
|
|
/* The last dimension of VEL escapes because of
|
/* The last dimension of VEL escapes because of
|
the assignment : vel[1][1] =...
|
the assignment : vel[1][1] =...
|
Only the two external dimensions are flattened. */
|
Only the two external dimensions are flattened. */
|
|
|
|
|
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
|
|
int
|
int
|
main (int argc, char **argv)
|
main (int argc, char **argv)
|
{
|
{
|
int i, j, k;
|
int i, j, k;
|
|
|
ARCHnodes = 2;
|
ARCHnodes = 2;
|
ARCHnodes1 = 4;
|
ARCHnodes1 = 4;
|
|
|
/* Dynamic memory allocations and initializations */
|
/* Dynamic memory allocations and initializations */
|
|
|
mem_init ();
|
mem_init ();
|
|
|
for (i = 0; i < ARCHnodes; i++)
|
for (i = 0; i < ARCHnodes; i++)
|
{
|
{
|
for (j = 0; j < 3; j++)
|
for (j = 0; j < 3; j++)
|
{
|
{
|
for (k = 0; k < ARCHnodes1; k++)
|
for (k = 0; k < ARCHnodes1; k++)
|
printf ("[%d][%d][%d]=%d ", i, j, k, vel[i][j][k]);
|
printf ("[%d][%d][%d]=%d ", i, j, k, vel[i][j][k]);
|
printf ("\n");
|
printf ("\n");
|
}
|
}
|
printf ("\n");
|
printf ("\n");
|
}
|
}
|
for (i = 0; i < ARCHnodes; i++)
|
for (i = 0; i < ARCHnodes; i++)
|
for (j = 0; j < 3; j++)
|
for (j = 0; j < 3; j++)
|
printf ("%x\n",vel[i][j]);
|
printf ("%x\n",vel[i][j]);
|
/*if (i!=1 || j!=1)*/
|
/*if (i!=1 || j!=1)*/
|
/*if (i==1 && j==1)
|
/*if (i==1 && j==1)
|
continue;
|
continue;
|
else
|
else
|
free (vel[i][j]);*/
|
free (vel[i][j]);*/
|
|
|
for (i = 0; i < ARCHnodes; i++)
|
for (i = 0; i < ARCHnodes; i++)
|
free (vel[i]);
|
free (vel[i]);
|
|
|
free (vel);
|
free (vel);
|
return 0;
|
return 0;
|
}
|
}
|
|
|
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
/* Dynamic memory allocations and initializations */
|
/* Dynamic memory allocations and initializations */
|
|
|
void
|
void
|
mem_init (void)
|
mem_init (void)
|
{
|
{
|
|
|
int i, j, k,d;
|
int i, j, k,d;
|
|
|
d = 0;
|
d = 0;
|
vel = (int ***) malloc (ARCHnodes * sizeof (int **));
|
vel = (int ***) malloc (ARCHnodes * sizeof (int **));
|
|
|
for (i = 0; i < ARCHnodes; i++)
|
for (i = 0; i < ARCHnodes; i++)
|
{
|
{
|
vel[i] = (int **) malloc (3 * sizeof (int *));
|
vel[i] = (int **) malloc (3 * sizeof (int *));
|
if (vel[i] == (int **) NULL)
|
if (vel[i] == (int **) NULL)
|
{
|
{
|
fprintf (stderr, "malloc failed for vel[%d]\n", i);
|
fprintf (stderr, "malloc failed for vel[%d]\n", i);
|
fflush (stderr);
|
fflush (stderr);
|
exit (0);
|
exit (0);
|
}
|
}
|
}
|
}
|
for (i = 0; i < ARCHnodes; i++)
|
for (i = 0; i < ARCHnodes; i++)
|
{
|
{
|
for (j = 0; j < 3; j++)
|
for (j = 0; j < 3; j++)
|
{
|
{
|
vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int));
|
vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int));
|
printf ("%x %d %d\n",vel[i][j], ARCHnodes1, sizeof (int));
|
printf ("%x %d %d\n",vel[i][j], ARCHnodes1, sizeof (int));
|
}
|
}
|
}
|
}
|
for (i = 0; i < ARCHnodes; i++)
|
for (i = 0; i < ARCHnodes; i++)
|
{
|
{
|
for (j = 0; j < 3; j++)
|
for (j = 0; j < 3; j++)
|
{
|
{
|
printf ("%x\n",vel[i][j]);
|
printf ("%x\n",vel[i][j]);
|
}
|
}
|
}
|
}
|
|
|
printf ("again:\n\n");
|
printf ("again:\n\n");
|
for (i = 0; i < ARCHnodes; i++)
|
for (i = 0; i < ARCHnodes; i++)
|
{
|
{
|
for (j = 0; j < 3; j++)
|
for (j = 0; j < 3; j++)
|
{
|
{
|
printf ("%x\n",vel[i][j]);
|
printf ("%x\n",vel[i][j]);
|
/*for (k = 0; k < ARCHnodes1; k++)
|
/*for (k = 0; k < ARCHnodes1; k++)
|
{
|
{
|
vel[i][j][k] = d;
|
vel[i][j][k] = d;
|
d++;
|
d++;
|
}*/
|
}*/
|
}
|
}
|
}
|
}
|
/*vel[1][1] = vel[0][1];*/
|
/*vel[1][1] = vel[0][1];*/
|
}
|
}
|
|
|
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
/* { dg-final { scan-ipa-dump-times "Flattened 2 dimensions" 1 "matrix-reorg" } } */
|
/* { dg-final { scan-ipa-dump-times "Flattened 2 dimensions" 1 "matrix-reorg" } } */
|
/* { dg-final { cleanup-ipa-dump "matrix-reorg" } } */
|
/* { dg-final { cleanup-ipa-dump "matrix-reorg" } } */
|
|
|