aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorbjorn Granlund <tege@gnu.org>1993-11-03 21:09:55 +0000
committerTorbjorn Granlund <tege@gnu.org>1993-11-03 21:09:55 +0000
commit5ac6158d0b938f95a80827c7c72b5fadc4976ca7 (patch)
treea208e6f581774c2f8fb6f1700c10e6a7e905a7ed
parentcc4c133a3646b53c5b77bdd55d1efb896a19b161 (diff)
downloadgcc-5ac6158d0b938f95a80827c7c72b5fadc4976ca7.zip
gcc-5ac6158d0b938f95a80827c7c72b5fadc4976ca7.tar.gz
gcc-5ac6158d0b938f95a80827c7c72b5fadc4976ca7.tar.bz2
(REGISTER_MOVE_COST): Decrease cost for move from
SHIFT_REGS to avoid regclass overflow. From-SVN: r5986
-rw-r--r--gcc/config/pa/pa.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h
index 7665c47..f683db3 100644
--- a/gcc/config/pa/pa.h
+++ b/gcc/config/pa/pa.h
@@ -1475,14 +1475,15 @@ while (0)
/* Compute extra cost of moving data between one register class
and another.
- Make moves from SAR so expensive they should never happen.
+ Make moves from SAR so expensive they should never happen. We used to
+ have 0xffff here, but that generates overflow in rare cases.
Copies involving a FP register and a non-FP register are relatively
expensive because they must go through memory.
Other copies are reasonably cheap. */
#define REGISTER_MOVE_COST(CLASS1, CLASS2) \
- (CLASS1 == SHIFT_REGS ? 0xffff \
+ (CLASS1 == SHIFT_REGS ? 0x100 \
: FP_REG_CLASS_P (CLASS1) && ! FP_REG_CLASS_P (CLASS2) ? 16 \
: FP_REG_CLASS_P (CLASS2) && ! FP_REG_CLASS_P (CLASS1) ? 16 \
: 2)