From dfc107627c31c493e4ed089aea79bc398738a27b Mon Sep 17 00:00:00 2001
From: Segher Boessenkool <segher@kernel.crashing.org>
Date: Thu, 15 Jun 2017 08:49:17 +0200
Subject: [PATCH] rs6000: Don't use REGNO in the add<mode>3 expander

The argument could be a subreg of reg instead, which means we have to
use reg_or_subregno instead of REGNO.


	* config/rs6000/rs6000.md (add<mode>3): Use reg_or_subregno instead
	of REGNO.

From-SVN: r249213
---
 gcc/ChangeLog               | 5 +++++
 gcc/config/rs6000/rs6000.md | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2d5110c8d86b..f460df6bd0de 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2017-06-15  Segher Boessenkool  <segher@kernel.crashing.org>
+
+	* config/rs6000/rs6000.md (add<mode>3): Use reg_or_subregno instead
+	of REGNO.
+
 2017-06-14  Maciej W. Rozycki  <macro@imgtec.com>
 
 	* config/mips/mips.md (MIPS16_T_REGNUM): Remove constant.
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index dedb2e3c1933..8e1b460ee814 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -1631,7 +1631,7 @@
 
       /* Adding a constant to r0 is not a valid insn, so use a different
 	 strategy in that case.  */
-      if (REGNO (operands[1]) == 0 || REGNO (tmp) == 0)
+      if (reg_or_subregno (operands[1]) == 0 || reg_or_subregno (tmp) == 0)
 	{
 	  if (operands[0] == operands[1])
 	    FAIL;
-- 
GitLab