}
return;
- case iro_Add:
- if (!mode_is_int(mode) && !mode_is_reference(mode)) {
- panic("Constant must be int or pointer for '+' to work");
- }
- do_dump_atomic_init(env, get_Add_left(init));
- be_emit_cstring(" + ");
- do_dump_atomic_init(env, get_Add_right(init));
- return;
-
- case iro_Sub:
- if (!mode_is_int(mode) && !mode_is_reference(mode)) {
- panic("Constant must be int or pointer for '-' to work");
- }
- do_dump_atomic_init(env, get_Sub_left(init));
- be_emit_cstring(" - ");
- do_dump_atomic_init(env, get_Sub_right(init));
- return;
-
- case iro_Mul:
- if (!mode_is_int(mode) && !mode_is_reference(mode)) {
- panic("Constant must be int or pointer for '*' to work");
- }
- do_dump_atomic_init(env, get_Mul_left(init));
- be_emit_cstring(" * ");
- do_dump_atomic_init(env, get_Mul_right(init));
- return;
+ case iro_Add:
+ if (!mode_is_int(mode) && !mode_is_reference(mode)) {
+ panic("Constant must be int or pointer for '+' to work");
+ }
+ do_dump_atomic_init(env, get_Add_left(init));
+ be_emit_cstring(" + ");
+ do_dump_atomic_init(env, get_Add_right(init));
+ return;
- default:
- assert(0 && "dump_atomic_init(): unknown IR-node");
+ case iro_Sub:
+ if (!mode_is_int(mode) && !mode_is_reference(mode)) {
+ panic("Constant must be int or pointer for '-' to work");
+ }
+ do_dump_atomic_init(env, get_Sub_left(init));
+ be_emit_cstring(" - ");
+ do_dump_atomic_init(env, get_Sub_right(init));
+ return;
+
+ case iro_Mul:
+ if (!mode_is_int(mode) && !mode_is_reference(mode)) {
+ panic("Constant must be int or pointer for '*' to work");
+ }
+ do_dump_atomic_init(env, get_Mul_left(init));
+ be_emit_cstring(" * ");
+ do_dump_atomic_init(env, get_Mul_right(init));
+ return;
+
+ default:
+ panic("dump_atomic_init(): unsupported IR-node %+F", init);
}
}
be_emit_write_line();
break;
}
- } else if (section == GAS_SECTION_PIC_TRAMPOLINES) {
+ } else if (section == GAS_SECTION_PIC_TRAMPOLINES
+ || section == GAS_SECTION_PIC_SYMBOLS) {
if (be_gas_flavour == GAS_FLAVOUR_MACH_O) {
be_emit_cstring("\t.indirect_symbol ");
be_emit_ident(get_entity_ident(ent));
be_emit_char('\n');
be_emit_write_line();
- be_emit_cstring("\thlt ; hlt ; hlt ; hlt ; hlt\n");
- be_emit_write_line();
+ if (section == GAS_SECTION_PIC_TRAMPOLINES) {
+ be_emit_cstring("\thlt ; hlt ; hlt ; hlt ; hlt\n");
+ be_emit_write_line();
+ } else {
+ assert(section == GAS_SECTION_PIC_SYMBOLS);
+ be_emit_cstring("\t.long 0\n");
+ be_emit_write_line();
+ }
} else {
panic("PIC trampolines not yet supported in this gas mode");
}
dump_compound_init(env, ent);
break;
default:
- assert(0);
+ panic("Unimplemented type kind in dump_global()");
}
}
}