From: Kyrylo Tkachov Date: Fri, 27 Nov 2015 14:39:34 +0000 (+0000) Subject: Fix FAIL: gcc.c-torture/execute/20050124-1.c -O2 (internal compiler error) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=23e4d0b369627a6131babcff43226b7de740b312;p=gcc.git Fix FAIL: gcc.c-torture/execute/20050124-1.c -O2 (internal compiler error) Revert 2015-11-27 Kyrylo Tkachov * ifcvt.c (insn_valid_noce_process_p): Reject insn if it satisfies multiple_sets. (noce_try_cmove_arith): Add checking asserts that orig_a and orig_b are not modified by the final modified insns in the basic blocks. From-SVN: r231019 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9e61bd6967a..fb519990fa9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2015-11-27 Kyrylo Tkachov + + Revert + 2015-11-27 Kyrylo Tkachov + + * ifcvt.c (insn_valid_noce_process_p): Reject insn if it satisfies + multiple_sets. + (noce_try_cmove_arith): Add checking asserts that orig_a and orig_b + are not modified by the final modified insns in the basic blocks. + 2015-11-27 Nathan Sidwell * config/nvptx/nvptx-protos.h (nvptx_addr_space_from_address): diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index c995b0fe5c4..8ece8734338 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -1850,7 +1850,6 @@ insn_valid_noce_process_p (rtx_insn *insn, rtx cc) { if (!insn || !NONJUMP_INSN_P (insn) - || multiple_sets (insn) || (cc && set_of (cc, insn))) return false; @@ -2177,7 +2176,7 @@ noce_try_cmove_arith (struct noce_if_info *if_info) swap insn that sets up A with the one that sets up B. If even that doesn't help, punt. */ - gcc_checking_assert (!emit_a || !modified_in_p (orig_b, emit_a)); + modified_in_a = emit_a != NULL_RTX && modified_in_p (orig_b, emit_a); if (tmp_b && then_bb) { FOR_BB_INSNS (then_bb, tmp_insn) @@ -2193,7 +2192,7 @@ noce_try_cmove_arith (struct noce_if_info *if_info) } if (emit_a || modified_in_a) { - gcc_checking_assert (!emit_b || !modified_in_p (orig_a, emit_b)); + modified_in_b = emit_b != NULL_RTX && modified_in_p (orig_a, emit_b); if (tmp_b && else_bb) { FOR_BB_INSNS (else_bb, tmp_insn)