/* PR tree-optimization/93982 - Assignment incorrectly omitted by -foptimize-strlen { dg-do run } { dg-options "-O2 -Wall" } */ struct A { const char **a; }; const char *buf[5]; __attribute__((noipa)) struct A foo (char *p) { struct A r = { (const char **) p }; r.a[0] = "12345678"; r.a[1] = ""; r.a[2] = ""; r.a[3] = ""; r.a[4] = ""; return r; } int main () { struct A r = foo ((char *) &buf[0]); if (!r.a[1] || r.a[1][0] != '\0') __builtin_abort (); return 0; }