combine.c (recog_for_combine): Remove the old notes prior to attempting to recognize the new pattern.

* combine.c (recog_for_combine): Remove the old notes
        prior to attempting to recognize the new pattern.
        (distribute_notes): Ignore REG_NONNEG notes.

From-SVN: r35492
This commit is contained in:
John Wehle 2000-08-04 19:16:05 +00:00 committed by Jeff Law
parent 4f3aeae1dc
commit c1194d7403
2 changed files with 18 additions and 3 deletions

View File

@ -1,3 +1,9 @@
Fri Aug 4 11:43:49 2000 John Wehle (john@feith.com)
* combine.c (recog_for_combine): Remove the old notes
prior to attempting to recognize the new pattern.
(distribute_notes): Ignore REG_NONNEG notes.
2000-08-04 Chandrakala Chavva <cchavva@redhat.com>
* varasm.c (output_constructor): Add .align 0 for packed vars.

View File

@ -9569,6 +9569,7 @@ recog_for_combine (pnewpat, insn, pnotes)
int num_clobbers_to_add = 0;
int i;
rtx notes = 0;
rtx old_notes;
/* If PAT is a PARALLEL, check to see if it contains the CLOBBER
we use to indicate that something didn't match. If we find such a
@ -9579,6 +9580,10 @@ recog_for_combine (pnewpat, insn, pnotes)
&& XEXP (XVECEXP (pat, 0, i), 0) == const0_rtx)
return -1;
/* Remove the old notes prior to trying to recognize the new pattern. */
old_notes = REG_NOTES (insn);
REG_NOTES (insn) = 0;
/* Is the result of combination a valid instruction? */
insn_code_number = recog (pat, insn, &num_clobbers_to_add);
@ -9608,6 +9613,8 @@ recog_for_combine (pnewpat, insn, pnotes)
insn_code_number = recog (pat, insn, &num_clobbers_to_add);
}
REG_NOTES (insn) = old_notes;
/* If we had any clobbers to add, make a new pattern than contains
them. Then check to make sure that all of them are dead. */
if (num_clobbers_to_add)
@ -12079,7 +12086,6 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
case REG_EQUAL:
case REG_EQUIV:
case REG_NONNEG:
case REG_NOALIAS:
/* These notes say something about results of an insn. We can
only support them if they used to be on I3 in which case they
@ -12137,9 +12143,12 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
}
break;
case REG_NONNEG:
case REG_WAS_0:
/* It is too much trouble to try to see if this note is still
correct in all situations. It is better to simply delete it. */
/* These notes say something about the value of a register prior
to the execution of an insn. It is too much trouble to see
if the note is still correct in all situations. It is better
to simply delete it. */
break;
case REG_RETVAL: