1  /* Test for diagnostics about excess initializers when using a macro
       2     defined in a system header:
       3     c/71115 - Missing warning: excess elements in struct initializer.  */
       4  /* { dg-do compile } */
       5  /* { dg-options "" } */
       6  /* { dg-require-effective-target int32plus } */
       7  
       8  #include <stddef.h>
       9  
      10  int* a[1] = {
      11    0,
      12    NULL              /* { dg-warning "excess elements|near init" } */
      13  };
      14  
      15  const char str[1] = {
      16    0,
      17    NULL              /* { dg-warning "excess elements|near init" } */
      18  };
      19  
      20  struct S {
      21    int *a;
      22  } s = {
      23    0,
      24    NULL              /* { dg-warning "excess elements|near init" } */
      25  };
      26  
      27  struct __attribute__ ((designated_init)) S2 {
      28    int *a;
      29  } s2 = {
      30    NULL              /* { dg-warning "positional initialization|near init" } */
      31  };
      32  
      33  union U {
      34    int *a;
      35  } u = {
      36    0,
      37    NULL              /* { dg-warning "excess elements|near init" } */
      38  };
      39  
      40  int __attribute__ ((vector_size (16))) ivec = {
      41    0, 0, 0, 0,
      42    NULL              /* { dg-warning "excess elements|near init" } */
      43  };
      44  
      45  int* scal = {
      46    0,
      47    NULL              /* { dg-warning "excess elements|near init" } */
      48  };