From 63670f233b9880fc43b9470408d9674ab1cfe9af Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Fri, 11 Feb 2005 23:50:46 +0000 Subject: [PATCH] re PR middle-end/19697 (gcc.c-torture/execute/ieee/mzero6.c:24: error: unrecognizable insn) PR middle-end/19697 2005-01-30 Roger Sayle * config/pa/pa.md (anddi3, iordi3): On HPPA64, disallow an integer constant as the second operand and a register as the third. From-SVN: r94903 --- gcc/ChangeLog | 7 +++++++ gcc/config/pa/pa.md | 26 +++++++------------------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c7398abfccce..d9012c192ccf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-02-11 John David Anglin + + PR middle-end/19697 + 2005-01-30 Roger Sayle + * config/pa/pa.md (anddi3, iordi3): On HPPA64, disallow an integer + constant as the second operand and a register as the third. + 2005-01-29 Alan Modra * unwind-dw2.c (execute_stack_op): Add missing cases for diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index 1aace89b20c2..e01600317101 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -4393,25 +4393,14 @@ (define_expand "anddi3" [(set (match_operand:DI 0 "register_operand" "") - (and:DI (match_operand:DI 1 "arith_double_operand" "") + (and:DI (match_operand:DI 1 "register_operand" "") (match_operand:DI 2 "arith_double_operand" "")))] "" " { - if (TARGET_64BIT) - { - /* One operand must be a register operand. */ - if (!register_operand (operands[1], DImode) - && !register_operand (operands[2], DImode)) - FAIL; - } - else - { - /* Both operands must be register operands. */ - if (!register_operand (operands[1], DImode) - || !register_operand (operands[2], DImode)) - FAIL; - } + /* Both operands must be register operands. */ + if (!TARGET_64BIT && !register_operand (operands[2], DImode)) + FAIL; }") (define_insn "" @@ -4472,14 +4461,13 @@ (define_expand "iordi3" [(set (match_operand:DI 0 "register_operand" "") - (ior:DI (match_operand:DI 1 "arith_double_operand" "") + (ior:DI (match_operand:DI 1 "register_operand" "") (match_operand:DI 2 "arith_double_operand" "")))] "" " { - if (! register_operand (operands[1], DImode) - || ! register_operand (operands[2], DImode)) - /* Let GCC break this into word-at-a-time operations. */ + /* Both operands must be register operands. */ + if (!TARGET_64BIT && !register_operand (operands[2], DImode)) FAIL; }") -- 2.47.2