OSDN Git Service

* h8300.c (h8300_adjust_insn_length): Avoid trying to recognize
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Apr 1999 23:07:06 +0000 (23:07 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Apr 1999 23:07:06 +0000 (23:07 +0000)
       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

gcc/ChangeLog
gcc/config/h8300/h8300.c
gcc/unroll.c

index d7c4dba..9497b2b 100644 (file)
@@ -13,6 +13,12 @@ Tue Apr  6 17:49:49 1999  Philip Blundell  <pb@nexus.co.uk>
 
 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.
 
index eb5d418..b181ae0 100644 (file)
@@ -3033,6 +3033,12 @@ h8300_adjust_insn_length (insn, length)
 {
   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;
 
index 9c0109d..f1080aa 100644 (file)
@@ -790,6 +790,14 @@ unroll_loop (loop_end, insn_count, loop_start, end_insert_before,
        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