aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel1@de.ibm.com>2006-06-14 14:19:54 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2006-06-14 14:19:54 +0000
commit184f4c5647deb9430279f508fe507084cf06193a (patch)
tree2aa11c80de271df35782753be562f3b5dbf042a5 /gcc/reload1.c
parent34e598d832055c787462d2f5c5b3983e9c16bff7 (diff)
downloadgcc-184f4c5647deb9430279f508fe507084cf06193a.zip
gcc-184f4c5647deb9430279f508fe507084cf06193a.tar.gz
gcc-184f4c5647deb9430279f508fe507084cf06193a.tar.bz2
re PR middle-end/27959 (s390x miscompilation due to clobbering literal pool base reg)
2006-06-14 Andreas Krebbel <krebbel1@de.ibm.com> PR middle-end/27959 * reload1.c (reload): Remove registers returned by update_eliminables from used_spill_regs. 2006-06-14 Andreas Krebbel <krebbel1@de.ibm.com> PR middle-end/27959 * gcc.dg/pr27959.c: New testcase. From-SVN: r114640
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index d791da6..f426e1d 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -989,6 +989,8 @@ reload (rtx first, int global)
HARD_REG_SET to_spill;
CLEAR_HARD_REG_SET (to_spill);
update_eliminables (&to_spill);
+ AND_COMPL_HARD_REG_SET(used_spill_regs, to_spill);
+
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
if (TEST_HARD_REG_BIT (to_spill, i))
{