return ".LE";
}
-/**
- * Dump a label.
- */
-static void dump_label(ir_label_t label) {
- be_emit_irprintf("%s%lu", be_gas_block_label_prefix(), label);
+void be_gas_emit_entity(ir_entity *entity)
+{
+ if (entity->type == firm_code_type) {
+ ir_label_t label = get_entity_label(entity);
+ be_emit_string(be_gas_block_label_prefix());
+ be_emit_irprintf("%lu", label);
+ } else {
+ be_emit_ident(get_entity_ld_ident(entity));
+ }
}
/**
case symconst_enum_const:
return get_enumeration_value(get_SymConst_enum(init));
- case symconst_label:
- return NULL;
-
default:
return NULL;
}
ir_mode *mode = get_irn_mode(init);
int bytes = get_mode_size_bytes(mode);
tarval *tv;
- ir_label_t label;
ir_entity *ent;
init = skip_Id(init);
waitq_put(env->worklist, ent);
set_entity_backend_marked(ent, 1);
}
- be_emit_ident(get_entity_ld_ident(ent));
+ be_gas_emit_entity(ent);
break;
case symconst_ofs_ent:
ent = get_SymConst_entity(init);
-#if 0 /* not needed, is it? */
- if (!is_entity_backend_marked(ent)) {
- waitq_put(env->worklist, ent);
- set_entity_backend_marked(ent, 1);
- }
-#endif
be_emit_irprintf("%d", get_entity_offset(ent));
break;
dump_arith_tarval(tv, bytes);
break;
- case symconst_label:
- label = get_SymConst_label(init);
- dump_label(label);
- break;
-
default:
assert(!"dump_atomic_init(): don't know how to init from this SymConst");
}
if (is_Method_type(type) && section != GAS_SECTION_PIC_TRAMPOLINES) {
return;
}
+ if (type == firm_code_type) {
+ return;
+ }
if (section != (be_gas_section_t) -1) {
emit_as_common = 0;