From 2037f31de25f34ac5b215b89ec18d197fa798f67 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Mon, 17 Dec 2012 18:17:24 +0100 Subject: [PATCH] ia32: fix ia32_perform_memory_operand setting wrong ls_mode --- ir/be/ia32/bearch_ia32.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/ir/be/ia32/bearch_ia32.c b/ir/be/ia32/bearch_ia32.c index 7b58521bb..a3eb44884 100644 --- a/ir/be/ia32/bearch_ia32.c +++ b/ir/be/ia32/bearch_ia32.c @@ -418,15 +418,13 @@ static int ia32_possible_memory_operand(const ir_node *irn, unsigned int i) static void ia32_perform_memory_operand(ir_node *irn, ir_node *spill, unsigned int i) { - ir_mode *load_mode; - ir_mode *dest_op_mode; - assert(ia32_possible_memory_operand(irn, i) && "Cannot perform memory operand change"); set_ia32_op_type(irn, ia32_AddrModeS); - load_mode = get_irn_mode(get_irn_n(irn, i)); - dest_op_mode = get_ia32_ls_mode(irn); + ir_mode *op_mode = get_irn_mode(get_irn_n(irn, i)); + ir_mode *load_mode = get_spill_mode_mode(op_mode); + ir_mode *dest_op_mode = get_ia32_ls_mode(irn); if (get_mode_size_bits(load_mode) <= get_mode_size_bits(dest_op_mode)) { set_ia32_ls_mode(irn, load_mode); } -- 2.20.1