re PR middle-end/8408 (simple legal c program ice in fixup_var_refs_1, at function.c:1938)
PR middle-end/8408 * genrecog.c (preds): Handle ADDRESSOF. (validate_pattern): Mark it as an lvalue. * gcc.c-torture/compile/20021103-1.c: New. From-SVN: r58774
This commit is contained in:
parent
7189ea2902
commit
0b40e88e10
@ -1,3 +1,9 @@
|
||||
2002-11-03 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
PR middle-end/8408
|
||||
* genrecog.c (preds): Handle ADDRESSOF.
|
||||
(validate_pattern): Mark it as an lvalue.
|
||||
|
||||
2002-11-02 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
* config/rs6000/rs6000.c (rs6000_override_options): Use string
|
||||
|
@ -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)
|
||||
|
10
gcc/testsuite/gcc.c-torture/compile/20021103-1.c
Normal file
10
gcc/testsuite/gcc.c-torture/compile/20021103-1.c
Normal file
@ -0,0 +1,10 @@
|
||||
/* PR middle-end/8408 */
|
||||
/* Verify that the recognizer explicitly
|
||||
handles ADDRESSOF operands. */
|
||||
|
||||
void foo(void)
|
||||
{
|
||||
double d1 = 3.14159, d2;
|
||||
if (&d2 == &d1)
|
||||
;
|
||||
}
|
Loading…
Reference in New Issue
Block a user