aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1996-07-11 10:38:31 -0600
committerJeff Law <law@gcc.gnu.org>1996-07-11 10:38:31 -0600
commitc05330a92385c577fc5a56a48c666663e4b55132 (patch)
treeb78c723646ae3efd699217e8998e2c3f0a7abdf3
parent51c0c1d7d2fd985d1fe9145e6a971dee36086456 (diff)
downloadgcc-c05330a92385c577fc5a56a48c666663e4b55132.zip
gcc-c05330a92385c577fc5a56a48c666663e4b55132.tar.gz
gcc-c05330a92385c577fc5a56a48c666663e4b55132.tar.bz2
h8300.h (OK_FOR_U): If generating H8/S code, accept SYMBOL_REF and SYMBOL_REF + CONST_INT.
* h8300/h8300.h (OK_FOR_U): If generating H8/S code, accept SYMBOL_REF and SYMBOL_REF + CONST_INT. From-SVN: r12427
-rw-r--r--gcc/config/h8300/h8300.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/config/h8300/h8300.h b/gcc/config/h8300/h8300.h
index 76efc06..9d4288b 100644
--- a/gcc/config/h8300/h8300.h
+++ b/gcc/config/h8300/h8300.h
@@ -790,18 +790,20 @@ struct rtx_def *function_arg();
/* Extra constraints - 'U' if for an operand valid for a bset
destination; i.e. a register, register indirect, or the
- eightbit memory region (a SYMBOL_REF with an SYMBOL_REF_FLAG set). */
+ eightbit memory region (a SYMBOL_REF with an SYMBOL_REF_FLAG set).
+
+ On the H8/S 'U' can also be a 16bit or 32bit absolute. */
#define OK_FOR_U(OP) \
((GET_CODE (OP) == REG && REG_OK_FOR_BASE_P (OP)) \
|| (GET_CODE (OP) == MEM && GET_CODE (XEXP (OP, 0)) == REG \
&& REG_OK_FOR_BASE_P (XEXP (OP, 0))) \
|| (GET_CODE (OP) == MEM && GET_CODE (XEXP (OP, 0)) == SYMBOL_REF \
- && SYMBOL_REF_FLAG (XEXP (OP, 0))) \
+ && (TARGET_H8300S || SYMBOL_REF_FLAG (XEXP (OP, 0)))) \
|| (GET_CODE (OP) == MEM && GET_CODE (XEXP (OP, 0)) == CONST \
&& GET_CODE (XEXP (XEXP (OP, 0), 0)) == PLUS \
&& GET_CODE (XEXP (XEXP (XEXP (OP, 0), 0), 0)) == SYMBOL_REF \
- && SYMBOL_REF_FLAG (XEXP (XEXP (OP, 0), 0)) \
- && GET_CODE (XEXP (XEXP (XEXP (OP, 0), 0), 1)) == CONST_INT))
+ && GET_CODE (XEXP (XEXP (XEXP (OP, 0), 0), 1)) == CONST_INT) \
+ && (TARGET_H8300S || SYMBOL_REF_FLAG (XEXP (XEXP (OP, 0), 0))))
#define EXTRA_CONSTRAINT(OP, C) \
((C) == 'U' ? OK_FOR_U (OP) : 0)