annotate gcc/testsuite/gcc.dg/pr39565.c @ 111:04ced10e8804

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