aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1999-10-17 23:08:36 +0000
committerJeff Law <law@gcc.gnu.org>1999-10-17 17:08:36 -0600
commit7739ebae532a59826503967bca495918273fe9e5 (patch)
tree97df9dd97a4e7e9756f22a48d27529dc4b2fa00b /gcc/config
parent60588660d0d2f910c85a1ca90a86da50dd591734 (diff)
downloadgcc-7739ebae532a59826503967bca495918273fe9e5.zip
gcc-7739ebae532a59826503967bca495918273fe9e5.tar.gz
gcc-7739ebae532a59826503967bca495918273fe9e5.tar.bz2
* pa.c (move_operand): Reject (lo_sum (reg) (unspec ...)).
From-SVN: r30060
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/pa/pa.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 6af0066..28fdf93 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -332,6 +332,14 @@ move_operand (op, mode)
op = XEXP (op, 0);
+ /* The LO_SUM part of a DLT reference is not considered a move_operand;
+ we must reject it here since it must be accepted by memory_address_p. */
+ if (GET_CODE (op) == LO_SUM
+ && GET_CODE (XEXP (op, 0)) == REG
+ && REG_OK_FOR_BASE_P (XEXP (op, 0))
+ && GET_CODE (XEXP (op, 1)) == UNSPEC)
+ return 0;
+
/* Since move_operand is only used for source operands, we can always
allow scaled indexing! */
if (! TARGET_DISABLE_INDEXING