USE, CLOBBER or SEQUENCE insns.
* unroll.c (unroll_loop): For HAVE_cc0 machines, adjust copy_end_luid
to account for the uncopied insn that sets cc0 at the end of the loop.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26283
138bc75d-0d04-0410-961f-
82ee72b054a4
Wed Apr 7 14:07:34 1999 Jeffrey A Law (law@cygnus.com)
+ * h8300.c (h8300_adjust_insn_length): Avoid trying to recognize
+ USE, CLOBBER or SEQUENCE insns.
+
+ * unroll.c (unroll_loop): For HAVE_cc0 machines, adjust copy_end_luid
+ to account for the uncopied insn that sets cc0 at the end of the loop.
+
* unroll.c (copy_loop_body): Always ensure at least two insns
are in the copied loop.
{
rtx pat;
+ /* We must filter these ou before calling get_attr_adjust_length. */
+ if (GET_CODE (PATTERN (insn)) == USE
+ || GET_CODE (PATTERN (insn)) == CLOBBER
+ || GET_CODE (PATTERN (insn)) == SEQUENCE)
+ return 0;
+
if (get_attr_adjust_length (insn) == ADJUST_LENGTH_NO)
return 0;
since it will also be used outside the loop. */
if (GET_CODE (copy_end) == JUMP_INSN)
copy_end_luid--;
+
+ /* If we have a target that uses cc0, then we also must not duplicate
+ the insn that sets cc0 before the jump insn. */
+#ifdef HAVE_cc0
+ if (GET_CODE (copy_end) == JUMP_INSN)
+ copy_end_luid--;
+#endif
+
/* If copy_start points to the NOTE that starts the loop, then we must
use the next luid, because invariant pseudo-regs moved out of the loop
have their lifetimes modified to start here, but they are not safe