diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c5471bce8c3..0a6a8a610ae 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Wed Jan 12 23:12:47 2000 Hans-Peter Nilsson + + * config/ns32k/ns32k.md: Revert Jan 9 change. + + * genrecog.c (maybe_both_true_2): Do not compare a predicate-test + to a mode-test, if the predicate is address_operand. + Wed Jan 12 22:34:00 2000 Jeffrey A Law (law@cygnus.com) * combine.c (if_then_else_cond): Be careful about what kinds diff --git a/gcc/config/ns32k/ns32k.md b/gcc/config/ns32k/ns32k.md index d8378e3150e..7f411d35f53 100644 --- a/gcc/config/ns32k/ns32k.md +++ b/gcc/config/ns32k/ns32k.md @@ -2032,7 +2032,7 @@ (define_insn "" [(set (match_operand:SI 0 "general_operand" "=g<") - (match_operand:SI 1 "address_operand" "p"))] + (match_operand:QI 1 "address_operand" "p"))] "" "* { diff --git a/gcc/genrecog.c b/gcc/genrecog.c index ce5f9104bf6..eb973fdc5ef 100644 --- a/gcc/genrecog.c +++ b/gcc/genrecog.c @@ -1,5 +1,5 @@ /* Generate code from machine description to recognize rtl as insns. - Copyright (C) 1987, 88, 92-95, 97-98, 1999 Free Software Foundation, Inc. + Copyright (C) 1987, 88, 92-95, 97-99, 2000 Free Software Foundation, Inc. This file is part of GNU CC. @@ -1012,7 +1012,12 @@ maybe_both_true_2 (d1, d2) { if (d2->type == DT_mode) { - if (d1->u.pred.mode != d2->u.mode) + if (d1->u.pred.mode != d2->u.mode + /* The mode of an address_operand predicate is the + mode of the memory, not the operand. It can only + be used for testing the predicate, so we must + ignore it here. */ + && strcmp (d1->u.pred.name, "address_operand") != 0) return 0; } /* Don't check two predicate modes here, because if both predicates