diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-11-03 23:42:51 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-11-03 23:42:51 +0000 |
commit | 26a7cedebb71587b1391f81842c9c86d4c07c061 (patch) | |
tree | 9e3955f385b4f465c28d52da9a6f5639a2b73532 /gcc/genrecog.c | |
parent | e2289981f9cee5652ea3cf35c458a86715fe2505 (diff) | |
download | gcc-26a7cedebb71587b1391f81842c9c86d4c07c061.tar.gz |
PR middle-end/8408
* genrecog.c (preds): Handle ADDRESSOF.
(validate_pattern): Mark it as an lvalue.
* gcc.c-torture/compile/20021103-1.c: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@58774 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/genrecog.c')
-rw-r--r-- | gcc/genrecog.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/gcc/genrecog.c b/gcc/genrecog.c index 9900b990a66..56b2680eb1f 100644 --- a/gcc/genrecog.c +++ b/gcc/genrecog.c @@ -187,22 +187,23 @@ static const struct pred_table const RTX_CODE codes[NUM_RTX_CODE]; } preds[] = { {"general_operand", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, - LABEL_REF, SUBREG, REG, MEM}}, + LABEL_REF, SUBREG, REG, MEM, ADDRESSOF}}, #ifdef PREDICATE_CODES PREDICATE_CODES #endif {"address_operand", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, - LABEL_REF, SUBREG, REG, MEM, PLUS, MINUS, MULT}}, - {"register_operand", {SUBREG, REG}}, - {"pmode_register_operand", {SUBREG, REG}}, + LABEL_REF, SUBREG, REG, MEM, ADDRESSOF, + PLUS, MINUS, MULT}}, + {"register_operand", {SUBREG, REG, ADDRESSOF}}, + {"pmode_register_operand", {SUBREG, REG, ADDRESSOF}}, {"scratch_operand", {SCRATCH, REG}}, {"immediate_operand", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, LABEL_REF}}, {"const_int_operand", {CONST_INT}}, {"const_double_operand", {CONST_INT, CONST_DOUBLE}}, - {"nonimmediate_operand", {SUBREG, REG, MEM}}, + {"nonimmediate_operand", {SUBREG, REG, MEM, ADDRESSOF}}, {"nonmemory_operand", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, - LABEL_REF, SUBREG, REG}}, + LABEL_REF, SUBREG, REG, ADDRESSOF}}, {"push_operand", {MEM}}, {"pop_operand", {MEM}}, {"memory_operand", {SUBREG, MEM}}, @@ -211,7 +212,7 @@ static const struct pred_table UNORDERED, ORDERED, UNEQ, UNGE, UNGT, UNLE, UNLT, LTGT}}, {"mode_independent_operand", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, - LABEL_REF, SUBREG, REG, MEM}} + LABEL_REF, SUBREG, REG, MEM, ADDRESSOF}} }; #define NUM_KNOWN_PREDS ARRAY_SIZE (preds) @@ -520,6 +521,7 @@ validate_pattern (pattern, insn, set, set_code) if (c != REG && c != SUBREG && c != MEM + && c != ADDRESSOF && c != CONCAT && c != PARALLEL && c != STRICT_LOW_PART) |