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. */ 4 5/* { dg-do link } */ 6/* { dg-options "-O2" } */ 7 8typedef 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; 15 16struct yasm_module { 17 const char *name; 18}; 19 20typedef struct yasm_module yasm_arch_module; 21typedef struct yasm_module yasm_dbgfmt_module; 22typedef struct yasm_module yasm_objfmt_module; 23typedef struct yasm_module yasm_listfmt_module; 24typedef struct yasm_module yasm_optimizer_module; 25 26typedef struct module { 27 void *data; 28} module; 29 30static struct { 31 module *m; 32 int n; 33} module_types[] = { 34 {}, 35}; 36 37void 38yasm_list_modules(yasm_module_type type, 39 void (*printfunc) (const char *name)) 40{ 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; 48 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); 70 } 71 } 72} 73 74int 75main() {} 76