/* PR c/5597 */ /* { dg-do compile } */ /* { dg-options "" } */ /* Verify that GCC forbids non-static initialization of flexible array members. */ struct str { int len; char s[]; }; struct str a = { 2, "a" }; void foo() { static struct str b = { 2, "b" }; struct str c = { 2, "c" }; /* { dg-error "(non-static)|(near initialization)" } */ struct str d = (struct str) { 2, "d" }; /* { dg-error "(non-static)|(near initialization)" } */ struct str e = (struct str) { d.len, "e" }; /* { dg-error "(non-static)|(initialization)" } */ } struct str f = { 0, {} }; void bar() { static struct str g = { 0, {} }; struct str h = { 0, {} }; /* { dg-error "(non-static)|(near initialization)" } */ struct str i = (struct str) { 0, {} }; /* { dg-error "(non-static)|(near initialization)" } */ struct str j = (struct str) { i.len, {} }; /* { dg-error "(non-static)|(initialization)" } */ } struct str k = { 0 }; void baz() { static struct str l = { 0 }; struct str m = { 0 }; struct str n = (struct str) { 0 }; struct str o = (struct str) { n.len }; } struct str p = {}; void qux() { static struct str q = {}; struct str r = {}; struct str s = (struct str) {}; }