Hi Folks,

another from my darwin-ppc stack...

 r239866 removed most of the uses of LR in returns and sibcalls

Darwin had an additional use of LR in the restore_world machinery.  This patch 
removes it
from the pattern in altivec.md and the relevant predicate.

OK / Comments?

Iain

gcc/

2016-12-11  Iain Sandoe  <i...@codesourcery.com>

        * config/rs6000/altivec.md (*restore_world): Remove LR use.
        * config/rs6000/predicates.md (restore_world_operation): Adjust op
        count, remove one USE.
---
 gcc/config/rs6000/altivec.md    | 1 -
 gcc/config/rs6000/predicates.md | 3 +--
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md
index 802aa74..0646f4c 100644
--- a/gcc/config/rs6000/altivec.md
+++ b/gcc/config/rs6000/altivec.md
@@ -406,7 +406,6 @@
 (define_insn "*restore_world"
  [(match_parallel 0 "restore_world_operation"
                   [(return)
-                  (use (reg:SI LR_REGNO))
                    (use (match_operand:SI 1 "call_operand" "s"))
                    (clobber (match_operand:SI 2 "gpc_reg_operand" "=r"))])]
  "TARGET_MACHO && (DEFAULT_ABI == ABI_DARWIN) && TARGET_32BIT"
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index 57a463b..0716c46 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -1338,13 +1338,12 @@
   rtx elt;
   int count = XVECLEN (op, 0);
 
-  if (count != 59)
+  if (count != 58)
     return 0;
 
   index = 0;
   if (GET_CODE (XVECEXP (op, 0, index++)) != RETURN
       || GET_CODE (XVECEXP (op, 0, index++)) != USE
-      || GET_CODE (XVECEXP (op, 0, index++)) != USE
       || GET_CODE (XVECEXP (op, 0, index++)) != CLOBBER)
     return 0;
 
-- 
2.8.1


Reply via email to