aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorbjorn Granlund <tege@gnu.org>1992-09-24 19:36:29 +0000
committerTorbjorn Granlund <tege@gnu.org>1992-09-24 19:36:29 +0000
commitfa5e5c1e7a443c1270999f1bc8f164b025df3e17 (patch)
treede7d83989dd37257fafa321382ec224953d24018
parent907f67ccf3ff01b7fcbc5d139616858a4a8fafd5 (diff)
downloadgcc-fa5e5c1e7a443c1270999f1bc8f164b025df3e17.zip
gcc-fa5e5c1e7a443c1270999f1bc8f164b025df3e17.tar.gz
gcc-fa5e5c1e7a443c1270999f1bc8f164b025df3e17.tar.bz2
(clobbered_register): Delete.
(srcsi_operand): Return 1 also for things matching depi_cint_operand. (secondary_reload_class): Replace. From-SVN: r2233
-rw-r--r--gcc/config/pa/pa.c24
1 files changed, 8 insertions, 16 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 1e18a14..f723542 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -382,15 +382,6 @@ arith32_operand (op, mode)
return register_operand (op, mode) || GET_CODE (op) == CONST_INT;
}
-/* Return truth value of statement that OP is a call-clobbered register. */
-int
-clobbered_register (op, mode)
- rtx op;
- enum machine_mode mode;
-{
- return (GET_CODE (op) == REG && call_used_regs[REGNO (op)]);
-}
-
/* True iff OP can be the source of a move to a general register. */
int
srcsi_operand (op, mode)
@@ -405,6 +396,9 @@ srcsi_operand (op, mode)
if (nonimmediate_operand (op, mode))
return 1;
+ if (depi_cint_operand (op, mode))
+ return 1;
+
/* OK if ldo or ldil can be used. */
return (GET_CODE (op) == CONST_INT
&& (INT_14_BITS (op) || (INTVAL (op) & 0x7ff) == 0));
@@ -2378,8 +2372,8 @@ output_arg_descriptor (insn)
fputc ('\n', asm_out_file);
}
-/* Memory loads/stores to/from fp registers may need a scratch
- register in which to reload the address. */
+/* Memory loads/stores to/from the shift need to go through
+ the general registers. */
enum reg_class
secondary_reload_class (class, mode, in)
@@ -2389,12 +2383,10 @@ secondary_reload_class (class, mode, in)
{
int regno = true_regnum (in);
- if ((regno >= FIRST_PSEUDO_REGISTER || regno == -1)
- && (class == FP_REGS || class == SNAKE_FP_REGS
- || class == HI_SNAKE_FP_REGS))
+ if (class == SHIFT_REGS && (regno <= 0 || regno >= 32))
return GENERAL_REGS;
- else
- return NO_REGS;
+
+ return NO_REGS;
}
enum direction