From: Richard Kenner Date: Thu, 29 Jun 1995 10:02:46 +0000 (-0400) Subject: (reload addsi3): New pattern to avoid reload lossage with register X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=30a830e9692c8cec556127a6adae0b406069da6e;p=gcc.git (reload addsi3): New pattern to avoid reload lossage with register eliminations. From-SVN: r10091 --- 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")