// PR c++/90947 - Simple lookup table of array of strings is miscompiled // Verify that initializers for arrays of elements of a class type with // "unusual" data members are correctly recognized as non-zero. // { dg-do compile } // { dg-options "-O1 -fdump-tree-optimized" } struct S { const char *p; static int i; enum { e }; typedef int X; int: 1, b:1; union { int c; }; const char *q; }; void f (void) { const struct S a[2] = { { /* .p = */ "", /* .b = */ 0, /* .c = */ 0, /* .q = */ "" }, { /* .p = */ "", /* .b = */ 0, /* .c = */ 0, /* .q = */ "" } }; if (!a[0].p || *a[0].p || !a[0].q || *a[0].q || !a[1].p || *a[1].p || !a[1].q || *a[1].q) __builtin_abort (); } // { dg-final { scan-tree-dump-not "abort" "optimized" } }