From c4d8bc8b7933a6d0f24f18f5692ba87945417342 Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Sun, 4 May 2008 00:43:18 +0000 Subject: [PATCH] redo wrong 19491: DIV and IDIV are different [r19502] --- ir/be/ia32/ia32_transform.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ir/be/ia32/ia32_transform.c b/ir/be/ia32/ia32_transform.c index 070128924..42bf4881d 100644 --- a/ir/be/ia32/ia32_transform.c +++ b/ir/be/ia32/ia32_transform.c @@ -1519,14 +1519,19 @@ static ir_node *create_Div(ir_node *node) add_irn_dep(produceval, get_irg_frame(irg)); sign_extension = new_rd_ia32_Cltd(dbgi, irg, new_block, am.new_op1, produceval); + + new_node = new_rd_ia32_IDiv(dbgi, irg, new_block, addr->base, + addr->index, new_mem, am.new_op2, + am.new_op1, sign_extension); } else { sign_extension = new_rd_ia32_Const(dbgi, irg, new_block, NULL, 0, 0); add_irn_dep(sign_extension, get_irg_frame(irg)); + new_node = new_rd_ia32_Div(dbgi, irg, new_block, addr->base, + addr->index, new_mem, am.new_op2, + am.new_op1, sign_extension); } - new_node = new_rd_ia32_Div(dbgi, irg, new_block, addr->base, - addr->index, new_mem, am.new_op2, - am.new_op1, sign_extension); + set_irn_pinned(new_node, get_irn_pinned(node)); set_am_attributes(new_node, &am); -- 2.20.1