diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1996-04-14 08:20:54 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1996-04-14 08:20:54 -0400 |
commit | 2dab894ad86c18637c6ecfc4dec5c6af4795c043 (patch) | |
tree | e13ceabc61eaf04aa9cf730705af0a39da3cc09c | |
parent | f061780b0325bf1cfd5210438f3d7bfac08829ac (diff) | |
download | gcc-2dab894ad86c18637c6ecfc4dec5c6af4795c043.zip gcc-2dab894ad86c18637c6ecfc4dec5c6af4795c043.tar.gz gcc-2dab894ad86c18637c6ecfc4dec5c6af4795c043.tar.bz2 |
(combine_instructions): In initial scan of insns, handle a REG_INC note's affect on sign bit copies and nonzero bits.
(combine_instructions): In initial scan of insns, handle a REG_INC
note's affect on sign bit copies and nonzero bits.
(set_nonzero_bits_and_sign_copies): Treat a zero SET arg as a CLOBBER.
From-SVN: r11762
-rw-r--r-- | gcc/combine.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index fdc0060..9efa2ab 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -536,6 +536,12 @@ combine_instructions (f, nregs) { note_stores (PATTERN (insn), set_nonzero_bits_and_sign_copies); record_dead_and_set_regs (insn); + +#ifdef AUTO_INC_DEC + for (links = REG_NOTES (insn); links; links = XEXP (links, 1)) + if (REG_NOTE_KIND (links) == REG_INC) + set_nonzero_bits_and_sign_copies (XEXP (links, 0), NULL_RTX); +#endif } if (GET_CODE (insn) == CODE_LABEL) @@ -728,7 +734,7 @@ set_nonzero_bits_and_sign_copies (x, set) & ((REGSET_ELT_TYPE) 1 << (REGNO (x) % REGSET_ELT_BITS))) && GET_MODE_BITSIZE (GET_MODE (x)) <= HOST_BITS_PER_WIDE_INT) { - if (GET_CODE (set) == CLOBBER) + if (set == 0 || GET_CODE (set) == CLOBBER) { reg_nonzero_bits[REGNO (x)] = GET_MODE_MASK (GET_MODE (x)); reg_sign_bit_copies[REGNO (x)] = 0; |