Various patterns use "register_operand" "l" (or "=l") although those
patterns are only created refering to LR_REGNO directly.  This patch
changes those patterns to use the hard regs as well.

Bootstrapped and regression checked on powerpc64-linux -m32,-m64.


Segher


2016-08-31  Segher Boessenkool  <seg...@kernel.crashing.org>

        * config/rs6000/rs6000.md (*restore_gpregs_<mode>_r11,
        *restore_gpregs_<mode>_r12, *restore_gpregs_<mode>_r1,
        *return_and_restore_gpregs_<mode>_r11,
        *return_and_restore_gpregs_<mode>_r12,
        *return_and_restore_gpregs_<mode>_r1,
        *return_and_restore_fpregs_<mode>_r11,
        *return_and_restore_fpregs_<mode>_r12,
        *return_and_restore_fpregs_<mode>_r1): Use the hard register LR_REGNO
        directly instead of via the "l" constraint.  Renumber operands.
        Fix whitespace.

---
 gcc/config/rs6000/rs6000.md | 120 ++++++++++++++++++++++----------------------
 1 file changed, 60 insertions(+), 60 deletions(-)

diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 1ecbb9d..7da4370 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -12620,115 +12620,115 @@ (define_insn "*lmw"
 
 (define_insn "*restore_gpregs_<mode>_r11"
  [(match_parallel 0 "any_parallel_operand"
-                  [(clobber (match_operand:P 1 "register_operand" "=l"))
-                   (use (match_operand:P 2 "symbol_ref_operand" "s"))
-                   (use (reg:P 11))
-                  (set (match_operand:P 3 "gpc_reg_operand" "=r")
-                       (match_operand:P 4 "memory_operand" "m"))])]
+                 [(clobber (reg:P LR_REGNO))
+                  (use (match_operand:P 1 "symbol_ref_operand" "s"))
+                  (use (reg:P 11))
+                  (set (match_operand:P 2 "gpc_reg_operand" "=r")
+                       (match_operand:P 3 "memory_operand" "m"))])]
  ""
- "bl %2"
+ "bl %1"
  [(set_attr "type" "branch")
   (set_attr "length" "4")])
 
 (define_insn "*restore_gpregs_<mode>_r12"
  [(match_parallel 0 "any_parallel_operand"
-                  [(clobber (match_operand:P 1 "register_operand" "=l"))
-                   (use (match_operand:P 2 "symbol_ref_operand" "s"))
-                   (use (reg:P 12))
-                  (set (match_operand:P 3 "gpc_reg_operand" "=r")
-                       (match_operand:P 4 "memory_operand" "m"))])]
+                 [(clobber (reg:P LR_REGNO))
+                  (use (match_operand:P 1 "symbol_ref_operand" "s"))
+                  (use (reg:P 12))
+                  (set (match_operand:P 2 "gpc_reg_operand" "=r")
+                       (match_operand:P 3 "memory_operand" "m"))])]
  ""
- "bl %2"
+ "bl %1"
  [(set_attr "type" "branch")
   (set_attr "length" "4")])
 
 (define_insn "*restore_gpregs_<mode>_r1"
  [(match_parallel 0 "any_parallel_operand"
-                  [(clobber (match_operand:P 1 "register_operand" "=l"))
-                   (use (match_operand:P 2 "symbol_ref_operand" "s"))
-                   (use (reg:P 1))
-                  (set (match_operand:P 3 "gpc_reg_operand" "=r")
-                       (match_operand:P 4 "memory_operand" "m"))])]
+                 [(clobber (reg:P LR_REGNO))
+                  (use (match_operand:P 1 "symbol_ref_operand" "s"))
+                  (use (reg:P 1))
+                  (set (match_operand:P 2 "gpc_reg_operand" "=r")
+                       (match_operand:P 3 "memory_operand" "m"))])]
  ""
- "bl %2"
+ "bl %1"
  [(set_attr "type" "branch")
   (set_attr "length" "4")])
 
 (define_insn "*return_and_restore_gpregs_<mode>_r11"
  [(match_parallel 0 "any_parallel_operand"
-                  [(return)
-                  (clobber (match_operand:P 1 "register_operand" "=l"))
-                  (use (match_operand:P 2 "symbol_ref_operand" "s"))
-                   (use (reg:P 11))
-                  (set (match_operand:P 3 "gpc_reg_operand" "=r")
-                       (match_operand:P 4 "memory_operand" "m"))])]
+                 [(return)
+                  (clobber (reg:P LR_REGNO))
+                  (use (match_operand:P 1 "symbol_ref_operand" "s"))
+                  (use (reg:P 11))
+                  (set (match_operand:P 2 "gpc_reg_operand" "=r")
+                       (match_operand:P 3 "memory_operand" "m"))])]
  ""
- "b %2"
+ "b %1"
  [(set_attr "type" "branch")
   (set_attr "length" "4")])
 
 (define_insn "*return_and_restore_gpregs_<mode>_r12"
  [(match_parallel 0 "any_parallel_operand"
-                  [(return)
-                  (clobber (match_operand:P 1 "register_operand" "=l"))
-                  (use (match_operand:P 2 "symbol_ref_operand" "s"))
-                   (use (reg:P 12))
-                  (set (match_operand:P 3 "gpc_reg_operand" "=r")
-                       (match_operand:P 4 "memory_operand" "m"))])]
+                 [(return)
+                  (clobber (reg:P LR_REGNO))
+                  (use (match_operand:P 1 "symbol_ref_operand" "s"))
+                  (use (reg:P 12))
+                  (set (match_operand:P 2 "gpc_reg_operand" "=r")
+                       (match_operand:P 3 "memory_operand" "m"))])]
  ""
- "b %2"
+ "b %1"
  [(set_attr "type" "branch")
   (set_attr "length" "4")])
 
 (define_insn "*return_and_restore_gpregs_<mode>_r1"
  [(match_parallel 0 "any_parallel_operand"
-                  [(return)
-                  (clobber (match_operand:P 1 "register_operand" "=l"))
-                  (use (match_operand:P 2 "symbol_ref_operand" "s"))
-                   (use (reg:P 1))
-                  (set (match_operand:P 3 "gpc_reg_operand" "=r")
-                       (match_operand:P 4 "memory_operand" "m"))])]
+                 [(return)
+                  (clobber (reg:P LR_REGNO))
+                  (use (match_operand:P 1 "symbol_ref_operand" "s"))
+                  (use (reg:P 1))
+                  (set (match_operand:P 2 "gpc_reg_operand" "=r")
+                       (match_operand:P 3 "memory_operand" "m"))])]
  ""
- "b %2"
+ "b %1"
  [(set_attr "type" "branch")
   (set_attr "length" "4")])
 
 (define_insn "*return_and_restore_fpregs_<mode>_r11"
  [(match_parallel 0 "any_parallel_operand"
-                  [(return)
-                  (clobber (match_operand:P 1 "register_operand" "=l"))
-                  (use (match_operand:P 2 "symbol_ref_operand" "s"))
-                   (use (reg:P 11))
-                  (set (match_operand:DF 3 "gpc_reg_operand" "=d")
-                       (match_operand:DF 4 "memory_operand" "m"))])]
+                 [(return)
+                  (clobber (reg:P LR_REGNO))
+                  (use (match_operand:P 1 "symbol_ref_operand" "s"))
+                  (use (reg:P 11))
+                  (set (match_operand:DF 2 "gpc_reg_operand" "=d")
+                       (match_operand:DF 3 "memory_operand" "m"))])]
  ""
- "b %2"
+ "b %1"
  [(set_attr "type" "branch")
   (set_attr "length" "4")])
 
 (define_insn "*return_and_restore_fpregs_<mode>_r12"
  [(match_parallel 0 "any_parallel_operand"
-                  [(return)
-                  (clobber (match_operand:P 1 "register_operand" "=l"))
-                  (use (match_operand:P 2 "symbol_ref_operand" "s"))
-                   (use (reg:P 12))
-                  (set (match_operand:DF 3 "gpc_reg_operand" "=d")
-                       (match_operand:DF 4 "memory_operand" "m"))])]
+                 [(return)
+                  (clobber (reg:P LR_REGNO))
+                  (use (match_operand:P 1 "symbol_ref_operand" "s"))
+                  (use (reg:P 12))
+                  (set (match_operand:DF 2 "gpc_reg_operand" "=d")
+                       (match_operand:DF 3 "memory_operand" "m"))])]
  ""
- "b %2"
+ "b %1"
  [(set_attr "type" "branch")
   (set_attr "length" "4")])
 
 (define_insn "*return_and_restore_fpregs_<mode>_r1"
  [(match_parallel 0 "any_parallel_operand"
-                  [(return)
-                  (clobber (match_operand:P 1 "register_operand" "=l"))
-                  (use (match_operand:P 2 "symbol_ref_operand" "s"))
-                   (use (reg:P 1))
-                  (set (match_operand:DF 3 "gpc_reg_operand" "=d")
-                       (match_operand:DF 4 "memory_operand" "m"))])]
+                 [(return)
+                  (clobber (reg:P LR_REGNO))
+                  (use (match_operand:P 1 "symbol_ref_operand" "s"))
+                  (use (reg:P 1))
+                  (set (match_operand:DF 2 "gpc_reg_operand" "=d")
+                       (match_operand:DF 3 "memory_operand" "m"))])]
  ""
- "b %2"
+ "b %1"
  [(set_attr "type" "branch")
   (set_attr "length" "4")])
 
-- 
1.9.3

Reply via email to