diff options
author | Kaz Kojima <kkojima@gcc.gnu.org> | 2004-12-23 04:53:48 +0000 |
---|---|---|
committer | Kaz Kojima <kkojima@gcc.gnu.org> | 2004-12-23 04:53:48 +0000 |
commit | 2ca396208cb35a3acb8d04424b40b9a23d65fcd1 (patch) | |
tree | b2c906a5834e8a57edba5eff762f36253c809198 | |
parent | a5370cf0e6274ed7a4c75327761ceb88b9eeb2ab (diff) | |
download | gcc-2ca396208cb35a3acb8d04424b40b9a23d65fcd1.zip gcc-2ca396208cb35a3acb8d04424b40b9a23d65fcd1.tar.gz gcc-2ca396208cb35a3acb8d04424b40b9a23d65fcd1.tar.bz2 |
re PR target/18511 (cc1plus segfaults when compiling libstdc++-v3/src/localename.cc)
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.
From-SVN: r92531
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/reload.c | 3 | ||||
-rw-r--r-- | gcc/reload1.c | 3 |
3 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d911b36..97fed21 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/reload.c b/gcc/reload.c index dc45ea5..9c0836a 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -6940,7 +6940,8 @@ find_inc_amount (rtx x, rtx inced) } /* 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, diff --git a/gcc/reload1.c b/gcc/reload1.c index c90c8b6..1fec0cd 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -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); } |