This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
bugs in vax and tahoe ports
- To: gcc at gcc dot gnu dot org
- Subject: bugs in vax and tahoe ports
- From: Denis Chertykov <denisc at overta dot ru>
- Date: Mon, 8 May 2000 23:33:17 +0400
Both ports (vax and tahoe) uses following code fragment:
&& (link = find_reg_note (insn, REG_WAS_0, 0))
/* Make sure the insn that stored the 0 is still present. */
&& ! INSN_DELETED_P (XEXP (link, 0))
&& GET_CODE (XEXP (link, 0)) != NOTE
/* Make sure cross jumping didn't happen here. */
&& no_labels_between_p (XEXP (link, 0), insn)
This fragment become incorrect after:
2000-04-07 Richard Henderson <rth@cygnus.com>
* flow.c (loop_depth): Remove.
(reg_next_use, cc0_live, mem_set_list): Replace with ...
(struct propagate_block_info): New.
(life_analysis): Don't allocate reg_next_use.
(propagate_block_delete_insn): Break out of propagate_block.
Use flow_delete_insn to unlink rather than use NOTE_INSN_DELETED.
Must be
&& (link = find_reg_note (insn, REG_WAS_0, 0))
/* Make sure the insn that stored the 0 is still present. */
&& ! INSN_DELETED_P (XEXP (link, 0))
+ /* Make sure the insn isn't deleteb by flow_delete_insn */
+ && NEXT_INSN (XEXP (link, 0))
&& GET_CODE (XEXP (link, 0)) != NOTE
/* Make sure cross jumping didn't happen here. */
&& no_labels_between_p (XEXP (link, 0), insn)
Denis.
PS: avr port has this bug too, but I shall correct it.