X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbestate.c;h=69e3e096a2af453d7830f70a9f31248c608a0df6;hb=07ea816fa30005a2e1e94171090327233e05a112;hp=32d0c14ee3bc7851ed652a22a6ee4fcaba580a44;hpb=6fa343c1410fe375dfb6058d882e9017ac024e67;p=libfirm diff --git a/ir/be/bestate.c b/ir/be/bestate.c index 32d0c14ee..69e3e096a 100644 --- a/ir/be/bestate.c +++ b/ir/be/bestate.c @@ -135,8 +135,7 @@ static spill_info_t *create_spill(minibelady_env_t *env, ir_node *state, int for do { after = next; next = sched_next(after); - } while (is_Proj(next) || is_Phi(next) || be_is_Keep(next) - || (arch_irn_get_flags(next) & arch_irn_flags_prolog)); + } while (is_Proj(next) || is_Phi(next) || be_is_Keep(next)); } else { after = state; } @@ -352,17 +351,6 @@ static block_info_t *compute_block_start_state(minibelady_env_t *env, ir_node *b return block_info; } -static ir_node *get_reload_point(ir_node *before) -{ - while (true) { - ir_node *prev = sched_prev(before); - if (! (arch_irn_get_flags(prev) & arch_irn_flags_epilog)) - break; - before = prev; - } - return before; -} - /** * For the given block @p block, decide for each values * whether it is used from a register or is reloaded @@ -419,7 +407,7 @@ static void belady(minibelady_env_t *env, ir_node *block) } /* create a reload to match state if necessary */ if (need_val != NULL && need_val != current_state) { - ir_node *before = get_reload_point(node); + ir_node *before = node; DBG((dbg, LEVEL_3, "\t... reloading %+F\n", need_val)); create_reload(env, need_val, before, current_state); current_state = need_val; @@ -614,7 +602,7 @@ void be_assure_state(ir_graph *irg, const arch_register_t *reg, void *func_env, obstack_free(&env.obst, NULL); } -BE_REGISTER_MODULE_CONSTRUCTOR(be_init_state); +BE_REGISTER_MODULE_CONSTRUCTOR(be_init_state) void be_init_state(void) { FIRM_DBG_REGISTER(dbg, "firm.be.state");