From 30a830e9692c8cec556127a6adae0b406069da6e Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Thu, 29 Jun 1995 06:02:46 -0400 Subject: [PATCH] (reload addsi3): New pattern to avoid reload lossage with register eliminations. From-SVN: r10091 --- gcc/config/pa/pa.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index 03ae98ee510..de8e0812c5a 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -2537,6 +2537,25 @@ [(set_attr "type" "binary,binary") (set_attr "length" "4,4")]) +;; Disgusting kludge to work around reload bugs with frame pointer +;; elimination. Similar to other magic reload patterns in the +;; indexed memory operations. +(define_insn "" + [(set (match_operand:SI 0 "register_operand" "=&r") + (plus:SI (plus:SI (match_operand:SI 1 "register_operand" "%r") + (match_operand:SI 2 "register_operand" "r")) + (match_operand:SI 3 "const_int_operand" "rL")))] + "reload_in_progress" + "* +{ + if (GET_CODE (operands[3]) == CONST_INT) + return \"ldo %3(%2),%0\;addl %1,%0,%0\"; + else + return \"addl %3,%2,%0\;addl %1,%0,%0\"; +}" + [(set_attr "type" "binary") + (set_attr "length" "8")]) + (define_insn "subdi3" [(set (match_operand:DI 0 "register_operand" "=r") (minus:DI (match_operand:DI 1 "register_operand" "r") -- 2.30.2