From 5f1355ef3890b4a997155b4f143681a1f992f68a Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Fri, 10 Jan 2003 22:28:24 +0100 Subject: [PATCH] ifcvt.c (noce_try_addcc): Do not call emit_conditional_add with weird operands. Fri Jan 10 22:05:35 CET 2003 Jan Hubicka * ifcvt.c (noce_try_addcc): Do not call emit_conditional_add with weird operands. From-SVN: r61169 --- gcc/ChangeLog | 5 +++++ gcc/ifcvt.c | 36 ++++++++++++++++++++---------------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9111be51088..e1c5d64a6bb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Fri Jan 10 22:05:35 CET 2003 Jan Hubicka + + * ifcvt.c (noce_try_addcc): Do not call emit_conditional_add + with weird operands. + 2003-01-10 Dale Johannesen * calls.c (load_register_parameters): Add is_sibcall, sibcall_failure diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index 3cf01942da7..21a7e648319 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -882,26 +882,30 @@ noce_try_addcc (if_info) enum rtx_code code = reversed_comparison_code (cond, if_info->jump); /* First try to use addcc pattern. */ - start_sequence (); - target = emit_conditional_add (if_info->x, code, - XEXP (cond, 0), XEXP (cond, 1), - VOIDmode, - if_info->b, XEXP (if_info->a, 1), - GET_MODE (if_info->x), - (code == LTU || code == GEU - || code == LEU || code == GTU)); - if (target) + if (general_operand (XEXP (cond, 0), VOIDmode) + && general_operand (XEXP (cond, 1), VOIDmode)) { - if (target != if_info->x) - noce_emit_move_insn (if_info->x, target); + start_sequence (); + target = emit_conditional_add (if_info->x, code, + XEXP (cond, 0), XEXP (cond, 1), + VOIDmode, + if_info->b, XEXP (if_info->a, 1), + GET_MODE (if_info->x), + (code == LTU || code == GEU + || code == LEU || code == GTU)); + if (target) + { + if (target != if_info->x) + noce_emit_move_insn (if_info->x, target); - seq = get_insns (); + seq = get_insns (); + end_sequence (); + emit_insn_before_scope (seq, if_info->jump, + INSN_SCOPE (if_info->insn_a)); + return TRUE; + } end_sequence (); - emit_insn_before_scope (seq, if_info->jump, - INSN_SCOPE (if_info->insn_a)); - return TRUE; } - end_sequence (); /* If that fails, construct conditional increment or decrement using setcc. */ -- 2.30.2