From 51071bf6e2b48696447f7aa3e858a75535e97666 Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Sat, 4 Oct 2008 23:06:40 +0000 Subject: [PATCH] - BugFix: fixed effect of r22470: Immediate is always the RIGHT operand (where this is specified?), so do NOT overwrite it (analog to turn_back_am()) [r22485] --- ir/be/ia32/ia32_finish.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ir/be/ia32/ia32_finish.c b/ir/be/ia32/ia32_finish.c index a62dd1983..02afd1c0f 100644 --- a/ir/be/ia32/ia32_finish.c +++ b/ir/be/ia32/ia32_finish.c @@ -479,8 +479,11 @@ static void fix_am_source(ir_node *irn, void *env) arch_set_irn_register(cg->arch_env, load_res, out_reg); /* set the new input operand */ - set_irn_n(irn, n_ia32_binary_right, load_res); - if(get_irn_mode(irn) == mode_T) { + if (is_ia32_Immediate(get_irn_n(irn, n_ia32_binary_right))) + set_irn_n(irn, n_ia32_binary_left, load_res); + else + set_irn_n(irn, n_ia32_binary_right, load_res); + if (get_irn_mode(irn) == mode_T) { const ir_edge_t *edge, *next; foreach_out_edge_safe(irn, edge, next) { ir_node *node = get_edge_src_irn(edge); -- 2.20.1