OSDN Git Service

PR target/18511
authorkkojima <kkojima@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Dec 2004 04:53:48 +0000 (04:53 +0000)
committerkkojima <kkojima@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Dec 2004 04:53:48 +0000 (04:53 +0000)
* reload1.c (emit_output_reload_insns): Check if OLD is a hard
register before calling regno_clobbered_p.
* reload.c: Update comment for regno_clobbered_p.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92531 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/reload.c
gcc/reload1.c

index d911b36..97fed21 100644 (file)
@@ -1,3 +1,10 @@
+2004-12-23  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+       PR target/18511
+       * reload1.c (emit_output_reload_insns): Check if OLD is a hard
+       register before calling regno_clobbered_p.
+       * reload.c: Update comment for regno_clobbered_p.
+
 2004-12-22  Richard Henderson  <rth@redhat.com>
 
        * config/i386/i386.c (override_options): Respect user disable of
index dc45ea5..9c0836a 100644 (file)
@@ -6940,7 +6940,8 @@ find_inc_amount (rtx x, rtx inced)
 }
 \f
 /* Return 1 if register REGNO is the subject of a clobber in insn INSN.
-   If SETS is nonzero, also consider SETs.  */
+   If SETS is nonzero, also consider SETs.  REGNO must refer to a hard
+   register.  */
 
 int
 regno_clobbered_p (unsigned int regno, rtx insn, enum machine_mode mode,
index c90c8b6..1fec0cd 100644 (file)
@@ -6705,7 +6705,8 @@ emit_output_reload_insns (struct insn_chain *chain, struct reload *rl,
          || !(set = single_set (insn))
          || rtx_equal_p (old, SET_DEST (set))
          || !reg_mentioned_p (old, SET_SRC (set))
-         || !regno_clobbered_p (REGNO (old), insn, rl->mode, 0))
+         || !((REGNO (old) < FIRST_PSEUDO_REGISTER)
+              && regno_clobbered_p (REGNO (old), insn, rl->mode, 0)))
        gen_reload (old, reloadreg, rl->opnum,
                    rl->when_needed);
     }