(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
auto-init-esra.c
       1  /* Verify the strength reduction adjustment for -ftrivial-auto-var-init.  */ 
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -ftrivial-auto-var-init=zero -fno-PIC -fdump-tree-gimple -fdump-tree-esra" } */
       4  
       5  
       6  typedef double VECTOR[3];
       7  
       8  enum
       9  {
      10   X = 0,
      11   Y = 1,
      12   Z = 2,
      13   T = 3
      14  };
      15  
      16  void Assign_Vector(VECTOR d, VECTOR s)
      17  {
      18   d[X] = s[X];
      19   d[Y] = s[Y];
      20   d[Z] = s[Z];
      21  }
      22  
      23  void VCross(VECTOR a, const VECTOR b, const VECTOR c)
      24  {
      25   VECTOR tmp;
      26  
      27   tmp[X] = b[Y] * c[Z] - b[Z] * c[Y];
      28   tmp[Y] = b[Z] * c[X] - b[X] * c[Z];
      29   tmp[Z] = b[X] * c[Y] - b[Y] * c[X];
      30  
      31   Assign_Vector(a, tmp);
      32  }
      33  
      34  /* { dg-final { scan-tree-dump-times "tmp = .DEFERRED_INIT \\(24, 2, \&\"tmp\"" 1 "gimple" } } */
      35  /* { dg-final { scan-tree-dump-times ".DEFERRED_INIT \\(8, 2, \&\"tmp\"" 3 "esra" } } */