1/* { dg-do compile } */
2/* { dg-options "-W -Wall" } */
3
4typedef __SIZE_TYPE__ size_t;
5extern void* malloc (size_t);
6extern void free (void*);
7extern void* realloc (void*, size_t);
8
9struct vtable {
10  void* (* _malloc) (size_t);
11  void (* _free) (void*);
12  void* (* _realloc) (void*, size_t);
13};
14
15struct vtable mtable = {
16  malloc,
17  free
18}; /* { dg-warning "missing initializer" "warning regression" { target *-*-* } {18} } */
19   /* { dg-warning "initialization for 'mtable._realloc'" "warning regression 2" { target *-*-* } {18} } */
20
21/* With designated initializers, we assume you meant to leave out the
22   initialization of any blank fields.  */
23struct vtable mtable2 = {
24  ._malloc = malloc,
25  ._realloc = realloc
26};
27
28struct vtable mtable3 = {
29  ._free = free,
30  ._malloc = malloc,
31  ._realloc = realloc
32};
33