* cse.c (canon_hash): Never reject hard regs in CCmode.
authorRichard Henderson <rth@cygnus.com>
Sun, 7 Mar 1999 02:00:27 +0000 (18:00 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Sun, 7 Mar 1999 02:00:27 +0000 (18:00 -0800)
From-SVN: r25623

gcc/ChangeLog
gcc/cse.c

index 3b02ecc..ff62783 100644 (file)
@@ -1,3 +1,7 @@
+Sun Mar  7 01:58:47 1999  Richard Henderson  <rth@cygnus.com>
+
+       * cse.c (canon_hash): Never reject hard regs in CCmode.
+
 Sun Mar 7 01:15:04 PST 1999 Jeff Law  (law@cygnus.com)
 
        * version.c: Bump for snapshot.
index 0852615..7d96908 100644 (file)
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -2009,7 +2009,12 @@ canon_hash (x, mode)
 
        /* On some machines, we can't record any non-fixed hard register,
           because extending its life will cause reload problems.  We
-          consider ap, fp, and sp to be fixed for this purpose.
+          consider ap, fp, and sp to be fixed for this purpose. 
+
+          We also consider CCmode registers to be fixed for this purpose;
+          failure to do so leads to failure to simplify 0<100 type of
+          conditionals.
+
           On all machines, we can't record any global registers.  */
 
        if (regno < FIRST_PSEUDO_REGISTER
@@ -2019,7 +2024,8 @@ canon_hash (x, mode)
                    && regno != FRAME_POINTER_REGNUM
                    && regno != HARD_FRAME_POINTER_REGNUM
                    && regno != ARG_POINTER_REGNUM
-                   && regno != STACK_POINTER_REGNUM)))
+                   && regno != STACK_POINTER_REGNUM
+                   && GET_MODE_CLASS (GET_MODE (x)) != MODE_CC)))
          {
            do_not_record = 1;
            return 0;