diff options
author | John Wehle <john@feith.com> | 2000-08-04 19:16:05 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2000-08-04 13:16:05 -0600 |
commit | c1194d740388113a485bd42652d40d4e901152ee (patch) | |
tree | ebeabc1facd97c63f7e49bcb69e2a7d42313c684 /gcc/combine.c | |
parent | 4f3aeae1dc3432c4869b606e88b8ed898d4d0272 (diff) | |
download | gcc-c1194d740388113a485bd42652d40d4e901152ee.zip gcc-c1194d740388113a485bd42652d40d4e901152ee.tar.gz gcc-c1194d740388113a485bd42652d40d4e901152ee.tar.bz2 |
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
Diffstat (limited to 'gcc/combine.c')
-rw-r--r-- | gcc/combine.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index 9f1c59e..0d43891 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -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: |