re PR rtl-optimization/80491 (Compiler regression for long-add case.)

PR rtl-optimization/80491
	* ifcvt.c (noce_process_if_block): When looking for x setter
	with missing else_bb, don't check only the insn right before
	cond_earliest, but look for the last insn that x is modified in
	within the same bb.

From-SVN: r247410
This commit is contained in:
Jakub Jelinek 2017-04-29 18:18:11 +02:00 committed by Jakub Jelinek
parent bc36c711da
commit cc3a5b33ba
2 changed files with 14 additions and 1 deletions

View file

@ -1,5 +1,11 @@
2017-04-29 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/80491
* ifcvt.c (noce_process_if_block): When looking for x setter
with missing else_bb, don't check only the insn right before
cond_earliest, but look for the last insn that x is modified in
within the same bb.
PR rtl-optimization/80491
* alias.c (memory_modified_in_insn_p): Return true for CALL_INSNs.

View file

@ -3440,7 +3440,14 @@ noce_process_if_block (struct noce_if_info *if_info)
}
else
{
insn_b = prev_nonnote_nondebug_insn (if_info->cond_earliest);
insn_b = if_info->cond_earliest;
do
insn_b = prev_nonnote_nondebug_insn (insn_b);
while (insn_b
&& (BLOCK_FOR_INSN (insn_b)
== BLOCK_FOR_INSN (if_info->cond_earliest))
&& !modified_in_p (x, insn_b));
/* We're going to be moving the evaluation of B down from above
COND_EARLIEST to JUMP. Make sure the relevant data is still
intact. */