aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorKaz Kojima <kkojima@gcc.gnu.org>2004-12-23 04:53:48 +0000
committerKaz Kojima <kkojima@gcc.gnu.org>2004-12-23 04:53:48 +0000
commit2ca396208cb35a3acb8d04424b40b9a23d65fcd1 (patch)
treeb2c906a5834e8a57edba5eff762f36253c809198 /gcc/reload1.c
parenta5370cf0e6274ed7a4c75327761ceb88b9eeb2ab (diff)
downloadgcc-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
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c3
1 files changed, 2 insertions, 1 deletions
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);
}