diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-01-10 21:28:24 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-01-10 21:28:24 +0000 |
commit | 4b5189c1a1c93074d14bb026ae7419abc73c76e0 (patch) | |
tree | 65a4f02cdf64046c0d61de2ad4b69a61ac81be83 /gcc/ifcvt.c | |
parent | 6f120a3808c902d0e845ecd0896bff646b4dc585 (diff) | |
download | gcc-4b5189c1a1c93074d14bb026ae7419abc73c76e0.tar.gz |
Fri Jan 10 22:05:35 CET 2003 Jan Hubicka <jh@suse.cz>
* ifcvt.c (noce_try_addcc): Do not call emit_conditional_add
with weird operands.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61169 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ifcvt.c')
-rw-r--r-- | gcc/ifcvt.c | 36 |
1 files changed, 20 insertions, 16 deletions
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. */ |