combine.c (try_combine): Don't ignore result of overlap checking loop.
* combine.c (try_combine): Don't ignore result of overlap checking loop. Combine overlap & asm check into single loop. Co-Authored-By: Nicolai Stange <nicstange@gmail.com> From-SVN: r244361
This commit is contained in:
parent
4bfe4a99e0
commit
0691440320
@ -1,3 +1,9 @@
|
||||
2017-01-12 Nathan Sidwell <nathan@acm.org>
|
||||
Nicolai Stange <nicstange@gmail.com>
|
||||
|
||||
* combine.c (try_combine): Don't ignore result of overlap checking
|
||||
loop. Combine overlap & asm check into single loop.
|
||||
|
||||
2017-01-12 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* tree-pretty-print.c (dump_generic_node): Provide -gimple
|
||||
|
@ -2785,22 +2785,24 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0,
|
||||
(Besides, reload can't handle output reloads for this.)
|
||||
|
||||
The problem can also happen if the dest of I3 is a memory ref,
|
||||
if another dest in I2 is an indirect memory ref. */
|
||||
for (i = 0; i < XVECLEN (p2, 0); i++)
|
||||
if another dest in I2 is an indirect memory ref.
|
||||
|
||||
Neither can this PARALLEL be an asm. We do not allow combining
|
||||
that usually (see can_combine_p), so do not here either. */
|
||||
bool ok = true;
|
||||
for (i = 0; ok && i < XVECLEN (p2, 0); i++)
|
||||
{
|
||||
if ((GET_CODE (XVECEXP (p2, 0, i)) == SET
|
||||
|| GET_CODE (XVECEXP (p2, 0, i)) == CLOBBER)
|
||||
&& reg_overlap_mentioned_p (SET_DEST (PATTERN (i3)),
|
||||
SET_DEST (XVECEXP (p2, 0, i))))
|
||||
break;
|
||||
|
||||
/* Make sure this PARALLEL is not an asm. We do not allow combining
|
||||
that usually (see can_combine_p), so do not here either. */
|
||||
for (i = 0; i < XVECLEN (p2, 0); i++)
|
||||
if (GET_CODE (XVECEXP (p2, 0, i)) == SET
|
||||
ok = false;
|
||||
else if (GET_CODE (XVECEXP (p2, 0, i)) == SET
|
||||
&& GET_CODE (SET_SRC (XVECEXP (p2, 0, i))) == ASM_OPERANDS)
|
||||
break;
|
||||
ok = false;
|
||||
}
|
||||
|
||||
if (i == XVECLEN (p2, 0))
|
||||
if (ok)
|
||||
for (i = 0; i < XVECLEN (p2, 0); i++)
|
||||
if (GET_CODE (XVECEXP (p2, 0, i)) == SET
|
||||
&& SET_DEST (XVECEXP (p2, 0, i)) == SET_SRC (PATTERN (i3)))
|
||||
|
Loading…
x
Reference in New Issue
Block a user