X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fia32%2Fia32_transform.c;h=a9acd89fd0f99ba79680ee588f2b71f21fb4670b;hb=438580abed840c55e82a03b47daeacfe2da8040f;hp=323f1ddac9dc09bb0e613b4edecc4de9daf11d7a;hpb=939b0af78227f2d14a4362a1b5518fd9e05b1053;p=libfirm diff --git a/ir/be/ia32/ia32_transform.c b/ir/be/ia32/ia32_transform.c index 323f1ddac..a9acd89fd 100644 --- a/ir/be/ia32/ia32_transform.c +++ b/ir/be/ia32/ia32_transform.c @@ -62,7 +62,6 @@ #include "ia32_new_nodes.h" #include "ia32_dbg_stat.h" #include "ia32_optimize.h" -#include "ia32_util.h" #include "ia32_address_mode.h" #include "ia32_architecture.h" @@ -90,6 +89,7 @@ DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL;) +static ir_node *old_initial_fpcw = NULL; static ir_node *initial_fpcw = NULL; int ia32_no_pic_adjust; @@ -1038,14 +1038,10 @@ static ir_node *gen_binop_flags(ir_node *node, construct_binop_flags_func *func, static ir_node *get_fpcw(void) { - ir_node *fpcw; if (initial_fpcw != NULL) return initial_fpcw; - fpcw = be_abi_get_ignore_irn(current_ir_graph, - &ia32_registers[REG_FPCW]); - initial_fpcw = be_transform_node(fpcw); - + initial_fpcw = be_transform_node(old_initial_fpcw); return initial_fpcw; } @@ -2249,7 +2245,8 @@ static ir_node *dest_am_binop(ir_node *node, ir_node *op1, ir_node *op2, be_set_transformed_node(get_Proj_pred(am.mem_proj), new_node); mem_proj = be_transform_node(am.mem_proj); - be_set_transformed_node(mem_proj ? mem_proj : am.mem_proj, new_node); + be_set_transformed_node(am.mem_proj, new_node); + be_set_transformed_node(mem_proj, new_node); return new_node; } @@ -2284,7 +2281,8 @@ static ir_node *dest_am_unop(ir_node *node, ir_node *op, ir_node *mem, be_set_transformed_node(get_Proj_pred(am.mem_proj), new_node); mem_proj = be_transform_node(am.mem_proj); - be_set_transformed_node(mem_proj ? mem_proj : am.mem_proj, new_node); + be_set_transformed_node(am.mem_proj, new_node); + be_set_transformed_node(mem_proj, new_node); return new_node; } @@ -5719,8 +5717,6 @@ static void ia32_pretransform_node(void) nomem = get_irg_no_mem(irg); noreg_GP = ia32_new_NoReg_gp(irg); - - get_fpcw(); } /** @@ -5826,6 +5822,8 @@ void ia32_transform_graph(ir_graph *irg) initial_fpcw = NULL; ia32_no_pic_adjust = 0; + old_initial_fpcw = be_get_initial_reg_value(irg, &ia32_registers[REG_FPCW]); + be_timer_push(T_HEIGHTS); ia32_heights = heights_new(irg); be_timer_pop(T_HEIGHTS);