(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
torture/
matrix-5.c
       1  /* { dg-do run } */
       2  /* { dg-options "-fwhole-program" } */
       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 two inner dimesions of matrix escape because of the 
      15     assignment vel[1]= ...
      16     VEL is not Flattened. */
      17  
      18  /*--------------------------------------------------------------------------*/
      19  
      20  int
      21  main (int argc, char **argv)
      22  {
      23    int i, j, k;
      24  
      25    ARCHnodes = 2;
      26    ARCHnodes1 = 4;
      27  
      28  /* Dynamic memory allocations and initializations */
      29  
      30    mem_init ();
      31  
      32    for (i = 0; i < ARCHnodes; i++)
      33      {
      34        for (j = 0; j < 3; j++)
      35  	{
      36  	  for (k = 0; k < ARCHnodes1; k++)
      37  	    printf ("[%d][%d][%d]=%d ", i, j, k, vel[i][j][k]);
      38  	  printf ("\n");
      39  	}
      40        printf ("\n");
      41      }
      42    for (i = 0; i < ARCHnodes-1; i++)
      43      for (j = 0; j < 3; j++)
      44        free (vel[i][j]);
      45  
      46    for (i = 0; i < ARCHnodes-1; i++)
      47        free (vel[i]);
      48  
      49    free (vel);
      50    return 0;
      51  }
      52  
      53  /*--------------------------------------------------------------------------*/
      54  /* Dynamic memory allocations and initializations                           */
      55  
      56  void
      57  mem_init (void)
      58  {
      59  
      60    int i, j, k,d;
      61   
      62    d = 0;
      63    vel = (int ***) malloc (ARCHnodes * sizeof (int **));
      64  
      65    for (i = 0; i < ARCHnodes; i++)
      66      {
      67        vel[i] = (int **) malloc (3 * sizeof (int *));
      68        if (vel[i] == (int **) NULL)
      69  	{
      70  	  printf ("malloc failed for vel[%d]\n", i);
      71  	  exit (0);
      72  	}
      73      }
      74    for (i = 0; i < ARCHnodes; i++)
      75      {
      76        for (j = 0; j < 3; j++)
      77  	{
      78  	  vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int));
      79  	}
      80      }
      81    for (i = 0; i < ARCHnodes; i++)
      82      {
      83        for (j = 0; j < 3; j++)
      84  	{
      85  	  for (k = 0; k < ARCHnodes1; k++)
      86  	    {
      87  	      vel[i][j][k] = d;
      88  	      d++;
      89  	    }
      90  	}
      91      }
      92    vel[1] = vel[0];
      93  }
      94  
      95  /*--------------------------------------------------------------------------*/