aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-11-03 18:11:49 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1994-11-03 18:11:49 -0500
commit38250554a3366aee701c6dc337f57073f6756920 (patch)
treed91a1bb54668a6116a1b1912b8e07188e9c4b5f1 /gcc
parentcfaaaf2e4b2ba4652b71933c3a3cff9f3a78f14c (diff)
downloadgcc-38250554a3366aee701c6dc337f57073f6756920.zip
gcc-38250554a3366aee701c6dc337f57073f6756920.tar.gz
gcc-38250554a3366aee701c6dc337f57073f6756920.tar.bz2
(EXTRA_CONSTRAINT): 'R' matches a SYMBOL_REF for TOC entry.
(PRINT_OPERAND_PUNCT_VALID_P): Recognize '*'. (PREDICATE_CODES): input_operand can now match SYMBOL_REF. From-SVN: r8381
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rs6000/rs6000.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 340d50f..58a7087 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -682,6 +682,7 @@ enum reg_class { NO_REGS, BASE_REGS, GENERAL_REGS, FLOAT_REGS,
#define EXTRA_CONSTRAINT(OP, C) \
((C) == 'Q' ? GET_CODE (OP) == MEM && GET_CODE (XEXP (OP, 0)) == REG \
+ : (C) == 'R' ? GET_CODE (OP) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (OP)\
: 0)
/* Given an rtx X being reloaded into a reg required to be
@@ -2155,7 +2156,7 @@ toc_section () \
/* Define which CODE values are valid. */
-#define PRINT_OPERAND_PUNCT_VALID_P(CODE) ((CODE) == '.')
+#define PRINT_OPERAND_PUNCT_VALID_P(CODE) ((CODE) == '.' || (CODE) == '*')
/* Print a memory address as an operand to reference that memory location. */
@@ -2186,7 +2187,7 @@ toc_section () \
{"mask_operand", {CONST_INT}}, \
{"call_operand", {SYMBOL_REF, REG}}, \
{"current_file_function_operand", {SYMBOL_REF}}, \
- {"input_operand", {SUBREG, MEM, REG, CONST_INT}}, \
+ {"input_operand", {SUBREG, MEM, REG, CONST_INT, SYMBOL_REF}}, \
{"load_multiple_operation", {PARALLEL}}, \
{"store_multiple_operation", {PARALLEL}}, \
{"branch_comparison_operator", {EQ, NE, LE, LT, GE, \