From ebcaaa2152486039f548259cc008ba5b3243d393 Mon Sep 17 00:00:00 2001 From: Roger Sayle Date: Mon, 31 Jan 2005 06:04:07 +0000 Subject: [PATCH] re PR middle-end/19697 (gcc.c-torture/execute/ieee/mzero6.c:24: error: unrecognizable insn) PR middle-end/19697 * config/pa/pa.md (anddi3, iordi3): On HPPA64, disallow an integer constant as the second operand and a register as the third. From-SVN: r94468 --- gcc/ChangeLog | 6 ++++++ gcc/config/pa/pa.md | 38 ++++++++------------------------------ 2 files changed, 14 insertions(+), 30 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e66f1f8a768..79a2feb986e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-01-30 Roger Sayle + + PR middle-end/19697 + * config/pa/pa.md (anddi3, iordi3): On HPPA64, disallow an integer + constant as the second operand and a register as the third. + 2005-01-31 Danny Smith PR target/19704 diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index cb88288db05..9a434a6095f 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -5441,25 +5441,14 @@ (define_expand "anddi3" [(set (match_operand:DI 0 "register_operand" "") - (and:DI (match_operand:DI 1 "and_operand" "") + (and:DI (match_operand:DI 1 "register_operand" "") (match_operand:DI 2 "and_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 "" @@ -5520,25 +5509,14 @@ (define_expand "iordi3" [(set (match_operand:DI 0 "register_operand" "") - (ior:DI (match_operand:DI 1 "ior_operand" "") + (ior:DI (match_operand:DI 1 "register_operand" "") (match_operand:DI 2 "ior_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 "" -- 2.30.2