mcount = new_entity(get_glob_type(), ID("mcount"), tp);
/* FIXME: enter the right ld_ident here */
set_entity_ld_ident(mcount, get_entity_ident(mcount));
- set_entity_linkage(mcount, IR_LINKAGE_EXTERN);
+ set_entity_visibility(mcount, ir_visibility_external);
}
instrument_initcall(cg->irg, mcount);
}
be_emit_cstring(".Ltext0:\n");
be_emit_write_line();
- /* we mark referenced global entities, so we can only emit those which
- * are actually referenced. (Note: you mustn't use the type visited flag
- * elsewhere in the backend)
- */
- inc_master_type_visited();
-
return &isa->arch_env;
}
ia32_isa_t *isa = self;
/* emit now all global declarations */
- be_gas_emit_decls(isa->arch_env.main_env, 1);
+ be_gas_emit_decls(isa->arch_env.main_env);
pmap_destroy(isa->regs_16bit);
pmap_destroy(isa->regs_8bit);
static bool mux_is_set(ir_node *sel, ir_node *mux_true, ir_node *mux_false)
{
- (void) sel;
ir_mode *mode = get_irn_mode(mux_true);
+ (void) sel;
if (!mode_is_int(mode) && !mode_is_reference(mode)
&& mode != mode_b)
return false;
- if (is_Const(mux_true) && is_Const_one(mux_true)
- && is_Const(mux_false) && is_Const_null(mux_false)) {
- return true;
- }
- if (is_Const(mux_true) && is_Const_null(mux_true)
- && is_Const(mux_false) && is_Const_one(mux_false)) {
+ if (is_Const(mux_true) && is_Const(mux_false)) {
+ /* we can create a set plus up two 3 instructions for any combination of constants */
return true;
}
mode = get_irn_mode(mux_true);
if (get_mode_size_bits(mode) > 32)
return false;
+ /* we can't handle MuxF yet */
+ if (mode_is_float(mode))
+ return false;
if (mux_is_doz(sel, mux_true, mux_false))
return true;