2018-05-15 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.dg / pr28574.c
blobb86f7f6b68814cf0ca12a774641d8cbea3eaf912
1 /* On IA64 This test resulted in a missing jumptable and an undefined
2 reference to a label. Make sure we can compile and link it with
3 no undefs at -O2. */
5 /* { dg-do link } */
6 /* { dg-options "-O2" } */
8 typedef enum yasm_module_type {
9 YASM_MODULE_ARCH = 0,
10 YASM_MODULE_DBGFMT,
11 YASM_MODULE_OBJFMT,
12 YASM_MODULE_LISTFMT,
13 YASM_MODULE_OPTIMIZER
14 } yasm_module_type;
16 struct yasm_module {
17 const char *name;
20 typedef struct yasm_module yasm_arch_module;
21 typedef struct yasm_module yasm_dbgfmt_module;
22 typedef struct yasm_module yasm_objfmt_module;
23 typedef struct yasm_module yasm_listfmt_module;
24 typedef struct yasm_module yasm_optimizer_module;
26 typedef struct module {
27 void *data;
28 } module;
30 static struct {
31 module *m;
32 int n;
33 } module_types[] = {
34 {},
37 void
38 yasm_list_modules(yasm_module_type type,
39 void (*printfunc) (const char *name))
41 int i;
42 module *modules = module_types[type].m;
43 yasm_arch_module *arch;
44 yasm_dbgfmt_module *dbgfmt;
45 yasm_objfmt_module *objfmt;
46 yasm_listfmt_module *listfmt;
47 yasm_optimizer_module *optimizer;
49 for (i=0; i<2; i++) {
50 switch (type) {
51 case YASM_MODULE_ARCH:
52 arch = modules[i].data;
53 printfunc(arch->name);
54 break;
55 case YASM_MODULE_DBGFMT:
56 dbgfmt = modules[i].data;
57 printfunc(dbgfmt->name);
58 break;
59 case YASM_MODULE_OBJFMT:
60 objfmt = modules[i].data;
61 printfunc(objfmt->name);
62 break;
63 case YASM_MODULE_LISTFMT:
64 listfmt = modules[i].data;
65 printfunc(listfmt->name);
66 break;
67 case YASM_MODULE_OPTIMIZER:
68 optimizer = modules[i].data;
69 printfunc(optimizer->name);
74 int
75 main() {}