| /* 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; | |
| } |