diff options
author | Geoffrey Keating <geoffk@redhat.com> | 2001-07-02 23:24:02 +0000 |
---|---|---|
committer | Geoffrey Keating <geoffk@gcc.gnu.org> | 2001-07-02 23:24:02 +0000 |
commit | 8bf4dfc24f1957b8f645e362e354655fb851fc89 (patch) | |
tree | 32e05e32fe74aae9660339b4f3da3d4d6c22b6ab | |
parent | 213c2316b697c78344ba7d03b2e922c8229e8b35 (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cse.c | 5 |
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. @@ -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 |