Commit e7bb59fa by Richard Kenner

(FIXED_REGNO_P): Remove previous change; all callers but one already check.

(CHEAP_REG): Only call FIXED_REGNO_P for hard regs.
(fold_rtx): Clarify comments.

From-SVN: r3762
parent 0a7b7709
...@@ -438,13 +438,11 @@ struct table_elt ...@@ -438,13 +438,11 @@ struct table_elt
but not if it is an overlapping register. */ but not if it is an overlapping register. */
#ifdef OVERLAPPING_REGNO_P #ifdef OVERLAPPING_REGNO_P
#define FIXED_REGNO_P(N) \ #define FIXED_REGNO_P(N) \
(((N) == FRAME_POINTER_REGNUM \ (((N) == FRAME_POINTER_REGNUM || fixed_regs[N]) \
|| ((N) < FIRST_PSEUDO_REGISTER && fixed_regs[N])) \
&& ! OVERLAPPING_REGNO_P ((N))) && ! OVERLAPPING_REGNO_P ((N)))
#else #else
#define FIXED_REGNO_P(N) \ #define FIXED_REGNO_P(N) \
((N) == FRAME_POINTER_REGNUM \ ((N) == FRAME_POINTER_REGNUM || fixed_regs[N])
|| ((N) < FIRST_PSEUDO_REGISTER && fixed_regs[N]))
#endif #endif
/* Compute cost of X, as stored in the `cost' field of a table_elt. Fixed /* Compute cost of X, as stored in the `cost' field of a table_elt. Fixed
...@@ -456,7 +454,8 @@ struct table_elt ...@@ -456,7 +454,8 @@ struct table_elt
((N) == FRAME_POINTER_REGNUM || (N) == STACK_POINTER_REGNUM \ ((N) == FRAME_POINTER_REGNUM || (N) == STACK_POINTER_REGNUM \
|| (N) == ARG_POINTER_REGNUM \ || (N) == ARG_POINTER_REGNUM \
|| (N) >= FIRST_VIRTUAL_REGISTER && (N) <= LAST_VIRTUAL_REGISTER \ || (N) >= FIRST_VIRTUAL_REGISTER && (N) <= LAST_VIRTUAL_REGISTER \
|| (FIXED_REGNO_P (N) && REGNO_REG_CLASS (N) != NO_REGS)) || ((N) < FIRST_PSEUDO_REGISTER \
&& FIXED_REGNO_P (N) && REGNO_REG_CLASS (N) != NO_REGS))
#define COST(X) \ #define COST(X) \
(GET_CODE (X) == REG \ (GET_CODE (X) == REG \
...@@ -4474,11 +4473,9 @@ simplify_ternary_operation (code, mode, op0_mode, op0, op1, op2) ...@@ -4474,11 +4473,9 @@ simplify_ternary_operation (code, mode, op0_mode, op0, op1, op2)
Otherwise, return X, possibly with one or more operands Otherwise, return X, possibly with one or more operands
modified by recursive calls to this function. modified by recursive calls to this function.
If X is a register whose contents are known, we may or may not If X is a register whose contents are known, we do NOT
return those contents. An instruction that uses a register is usually return those contents here. equiv_constant is called to
faster than one that uses a constant. But on machines with few hard perform that task.
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 INSN is the insn that we may be modifying. If it is 0, make a copy
of X before modifying it. */ of X before modifying it. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment