/* Verify zero initialization for array, union, and structure type automatic variables.  */
/* { dg-do compile } */
/* { dg-options "-ftrivial-auto-var-init=zero -fdump-tree-gimple" } */

struct S
{
  int f1;
  float f2;
  char f3[20];
};

union U
{
  char u1[5];
  int u2;
  float u3; 
};

double result;

double foo()
{
  int temp1[3];
  double temp2[3];
  struct S temp3;
  union U temp4;
  
  result = temp1[2] + temp2[1] + temp3.f2 + temp4.u3;
  return result;
}

/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(12, 2, 0\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(24, 2, 0\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(28, 2, 0\\)" "gimple" } } */
/* { dg-final { scan-tree-dump "temp4 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" } } */
