1/* PR39565: Static variable leaves undefined symbol in object file.
2   Variables codestrs_4 and codestrs_8 should not be undefined,
3   when this program is compiled at -O2. As a basic sanity test,
4   verify that this program compiles into an executable and runs. */
5
6/* { dg-do run } */
7/* { dg-options "-O2" } */
8
9extern void abort (void);
10extern void exit (int);
11extern int strcmp (const char *, const char *);
12
13static const union codestrs_t_4 {
14  struct {
15    char str_2[sizeof ("Illegal opcode")];
16  };
17  char str[0];
18} codestrs_4 = { {"Illegal opcode"} };
19
20static const union codestrs_t_8 {
21  struct {
22    char str_12[sizeof ("Integer divide by zero")];
23  };
24  char str[0];
25} codestrs_8 = { {"Integer divide by zero"} };
26
27const char *
28psiginfo (int pinfo)
29{
30  const char *base = ((void *)0);
31
32  switch (pinfo)
33    {
34    case 4: base = codestrs_4.str; break;
35    case 8: base = codestrs_8.str; break;
36    }
37  return base;
38}
39
40int
41main (void)
42{
43  if (strcmp (psiginfo (4), codestrs_4.str))
44    abort ();
45  if (strcmp (psiginfo (8), codestrs_8.str))
46    abort ();
47  exit (0);
48}
49