/* PR39565: Static variable leaves undefined symbol in object file. Variables codestrs_4 and codestrs_8 should not be undefined, when this program is compiled at -O2. As a basic sanity test, verify that this program compiles into an executable and runs. */ /* { dg-do run } */ /* { dg-options "-O2" } */ extern void abort (void); extern void exit (int); extern int strcmp (const char *, const char *); static const union codestrs_t_4 { struct { char str_2[sizeof ("Illegal opcode")]; }; char str[0]; } codestrs_4 = { {"Illegal opcode"} }; static const union codestrs_t_8 { struct { char str_12[sizeof ("Integer divide by zero")]; }; char str[0]; } codestrs_8 = { {"Integer divide by zero"} }; const char * psiginfo (int pinfo) { const char *base = ((void *)0); switch (pinfo) { case 4: base = codestrs_4.str; break; case 8: base = codestrs_8.str; break; } return base; } int main (void) { if (strcmp (psiginfo (4), codestrs_4.str)) abort (); if (strcmp (psiginfo (8), codestrs_8.str)) abort (); exit (0); }