combine.c (can_combine_p): Include successor in volatile test.

Mon Apr  6 07:17:52 1998  Catherine Moore  <clm@cygnus.com>
        * combine.c (can_combine_p):  Include successor in volatile test.

From-SVN: r19018
This commit is contained in:
Catherine Moore 1998-04-06 10:49:13 +00:00 committed by Richard Henderson
parent 64ad9df2ce
commit d276f2bb0c
2 changed files with 15 additions and 6 deletions

View File

@ -1,3 +1,7 @@
Mon Apr 6 07:17:52 1998 Catherine Moore <clm@cygnus.com>
* combine.c (can_combine_p): Include successor in volatile test.
Mon Apr 6 14:16:33 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* sh.h (CASE_VECTOR_SHORTEN_MODE): Fix logic when to set

View File

@ -1037,14 +1037,19 @@ can_combine_p (insn, i3, pred, succ, pdest, psrc)
return 0;
/* If INSN contains anything volatile, or is an `asm' (whether volatile
or not), reject, unless nothing volatile comes between it and I3,
with the exception of SUCC. */
or not), reject, unless nothing volatile comes between it and I3 */
if (GET_CODE (src) == ASM_OPERANDS || volatile_refs_p (src))
for (p = NEXT_INSN (insn); p != i3; p = NEXT_INSN (p))
if (GET_RTX_CLASS (GET_CODE (p)) == 'i'
&& p != succ && volatile_refs_p (PATTERN (p)))
return 0;
{
/* Make sure succ doesn't contain a volatile reference. */
if (succ != 0 && volatile_refs_p (PATTERN (succ)))
return 0;
for (p = NEXT_INSN (insn); p != i3; p = NEXT_INSN (p))
if (GET_RTX_CLASS (GET_CODE (p)) == 'i'
&& p != succ && volatile_refs_p (PATTERN (p)))
return 0;
}
/* If INSN is an asm, and DEST is a hard register, reject, since it has
to be an explicit register variable, and was chosen for a reason. */