diff options
author | Andreas Krebbel <krebbel1@de.ibm.com> | 2006-06-14 14:19:54 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2006-06-14 14:19:54 +0000 |
commit | 184f4c5647deb9430279f508fe507084cf06193a (patch) | |
tree | 2aa11c80de271df35782753be562f3b5dbf042a5 /gcc/reload1.c | |
parent | 34e598d832055c787462d2f5c5b3983e9c16bff7 (diff) | |
download | gcc-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.c | 2 |
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)) { |