(FIXED_REGNO_P): Pseudos can't be fixed regs.
authorJames Van Artsdalen <jrv@gnu.org>
Tue, 16 Mar 1993 09:54:12 +0000 (09:54 +0000)
committerJames Van Artsdalen <jrv@gnu.org>
Tue, 16 Mar 1993 09:54:12 +0000 (09:54 +0000)
From-SVN: r3757

gcc/cse.c

index d170046d1006bea8d399aa16f2f778616a8875a5..f328ef8a9f2c8a9b12e9668b714959545d8b0b53 100644 (file)
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -438,11 +438,13 @@ struct table_elt
    but not if it is an overlapping register.  */
 #ifdef OVERLAPPING_REGNO_P
 #define FIXED_REGNO_P(N)  \
-  (((N) == FRAME_POINTER_REGNUM || fixed_regs[N])      \
+  (((N) == FRAME_POINTER_REGNUM                                \
+    || ((N) < FIRST_PSEUDO_REGISTER && fixed_regs[N])) \
    && ! OVERLAPPING_REGNO_P ((N)))
 #else
 #define FIXED_REGNO_P(N)  \
-  ((N) == FRAME_POINTER_REGNUM || fixed_regs[N])
+  ((N) == FRAME_POINTER_REGNUM                         \
+   || ((N) < FIRST_PSEUDO_REGISTER && fixed_regs[N]))
 #endif
 
 /* Compute cost of X, as stored in the `cost' field of a table_elt.  Fixed
@@ -4472,9 +4474,11 @@ simplify_ternary_operation (code, mode, op0_mode, op0, op1, op2)
    Otherwise, return X, possibly with one or more operands
    modified by recursive calls to this function.
 
-   If X is a register whose contents are known, we do NOT
-   return those contents.  This is because an instruction that
-   uses a register is usually faster than one that uses a constant.
+   If X is a register whose contents are known, we may or may not
+   return those contents.  An instruction that uses a register is usually
+   faster than one that uses a constant.  But on machines with few hard
+   regs, using a register instead of a constant increases register life,
+   hurting register allocation.
 
    INSN is the insn that we may be modifying.  If it is 0, make a copy
    of X before modifying it.  */