This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

bugs in vax and tahoe ports



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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]