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