aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@redhat.com>2001-07-02 23:24:02 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2001-07-02 23:24:02 +0000
commit8bf4dfc24f1957b8f645e362e354655fb851fc89 (patch)
tree32e05e32fe74aae9660339b4f3da3d4d6c22b6ab /gcc
parent213c2316b697c78344ba7d03b2e922c8229e8b35 (diff)
downloadgcc-8bf4dfc24f1957b8f645e362e354655fb851fc89.zip
gcc-8bf4dfc24f1957b8f645e362e354655fb851fc89.tar.gz
gcc-8bf4dfc24f1957b8f645e362e354655fb851fc89.tar.bz2
cse.c (canon_hash): Don't register registers in very small register classes...
* cse.c (canon_hash): Don't register registers in very small register classes, as extending their lifetime might cause reload to fail. From-SVN: r43714
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cse.c5
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a83fdf5..5b45aab 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2001-07-02 Geoffrey Keating <geoffk@redhat.com>
+
+ * cse.c (canon_hash): Don't register registers in very small
+ register classes, as extending their lifetime might cause
+ reload to fail.
+
Mon Jul 2 23:14:00 CEST 2001 Jan Hubicka <jh@suse.cz>
* flow.c (try_redirect_by_replacing_jump): Remove cc0 setter.
diff --git a/gcc/cse.c b/gcc/cse.c
index bc4a05a..87694a1 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -2266,10 +2266,13 @@ canon_hash (x, mode)
failure to do so leads to failure to simplify 0<100 type of
conditionals.
- On all machines, we can't record any global registers. */
+ On all machines, we can't record any global registers.
+ Nor should we record any register that is in a small
+ class, as defined by CLASS_LIKELY_SPILLED_P. */
if (regno < FIRST_PSEUDO_REGISTER
&& (global_regs[regno]
+ || CLASS_LIKELY_SPILLED_P (REGNO_REG_CLASS (regno))
|| (SMALL_REGISTER_CLASSES
&& ! fixed_regs[regno]
&& regno != FRAME_POINTER_REGNUM