From 48855443fa042c0c009db313db1dd16a355ae986 Mon Sep 17 00:00:00 2001
From: Jeff Law <law@redhat.com>
Date: Tue, 29 Nov 2016 21:15:55 -0700
Subject: [PATCH] lra-constraints.c (check_and_process_move): Constrain the
 range of DCLASS and SCLASS to avoid false positive out of bounds...

	* lra-constraints.c (check_and_process_move): Constrain the
	range of DCLASS and SCLASS to avoid false positive out of bounds
	array index warning.

From-SVN: r242993
---
 gcc/ChangeLog         | 6 ++++++
 gcc/lra-constraints.c | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b6383aa46914..df787e1be1e5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-11-29  Jeff Law  <law@redhat.com>
+
+	* lra-constraints.c (check_and_process_move): Constrain the
+	range of DCLASS and SCLASS to avoid false positive out of bounds
+	array index warning.
+
 2016-11-29  David Malcolm  <dmalcolm@redhat.com>
 
 	* doc/install.texi (--with-target-bdw-gc): Remove stray '@'.
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index 133b55ce0ba4..7784ad29744b 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -1150,6 +1150,7 @@ check_and_process_move (bool *change_p, bool *sec_mem_p ATTRIBUTE_UNUSED)
   sclass = dclass = NO_REGS;
   if (REG_P (dreg))
     dclass = get_reg_class (REGNO (dreg));
+  gcc_assert (dclass < LIM_REG_CLASSES);
   if (dclass == ALL_REGS)
     /* ALL_REGS is used for new pseudos created by transformations
        like reload of SUBREG_REG (see function
@@ -1161,6 +1162,7 @@ check_and_process_move (bool *change_p, bool *sec_mem_p ATTRIBUTE_UNUSED)
     return false;
   if (REG_P (sreg))
     sclass = get_reg_class (REGNO (sreg));
+  gcc_assert (sclass < LIM_REG_CLASSES);
   if (sclass == ALL_REGS)
     /* See comments above.  */
     return false;
-- 
GitLab