From 89a6bb52b355edd430ee825517c9574ec4f02a1f Mon Sep 17 00:00:00 2001 From: Steven Bosscher Date: Sat, 17 Dec 2005 17:32:36 +0000 Subject: [PATCH] re PR rtl-optimization/23837 (Wrong code with REG_NO_CONFLICT notes (caused by combine)) PR rtl-optimization/23837 * optabs.c (expand_binop): For a multi-word rotate, never emit a REG_NO_CONFLICT block. From-SVN: r108721 --- gcc/ChangeLog | 6 ++++++ gcc/optabs.c | 17 ++--------------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d8dac6a9f0e9..062f46647eb6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-12-17 Steven Bosscher + + PR rtl-optimization/23837 + * optabs.c (expand_binop): For a multi-word rotate, never emit + a REG_NO_CONFLICT block. + 2005-12-16 John David Anglin Backport from mainline: diff --git a/gcc/optabs.c b/gcc/optabs.c index 3d85a06fc38e..536b1da307eb 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -1078,7 +1078,7 @@ expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1, && ashl_optab->handlers[(int) word_mode].insn_code != CODE_FOR_nothing && lshr_optab->handlers[(int) word_mode].insn_code != CODE_FOR_nothing) { - rtx insns, equiv_value; + rtx insns; rtx into_target, outof_target; rtx into_input, outof_input; rtx inter; @@ -1174,20 +1174,7 @@ expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1, if (inter != 0) { - if (binoptab->code != UNKNOWN) - equiv_value = gen_rtx_fmt_ee (binoptab->code, mode, op0, op1); - else - equiv_value = 0; - - /* We can't make this a no conflict block if this is a word swap, - because the word swap case fails if the input and output values - are in the same register. */ - if (shift_count != BITS_PER_WORD) - emit_no_conflict_block (insns, target, op0, op1, equiv_value); - else - emit_insn (insns); - - + emit_insn (insns); return target; } } -- 2.47.2