IRA: Fix % constraint modifier handling on disabled alternatives.
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>
Fri, 18 Dec 2015 10:39:52 +0000 (10:39 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Fri, 18 Dec 2015 10:39:52 +0000 (10:39 +0000)
gcc/ChangeLog:

2015-12-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* ira.c (ira_setup_alts): Move the scan for commutative modifier
to the first loop to make it work even with disabled alternatives.

From-SVN: r231814

gcc/ChangeLog
gcc/ira.c

index 802c8b8fd761844d11082a42d7e91d0738601de9..803dbd775a62de00206c3bd7b9f3fc14360d5343 100644 (file)
@@ -1,3 +1,8 @@
+2015-12-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * ira.c (ira_setup_alts): Move the scan for commutative modifier
+       to the first loop to make it work even with disabled alternatives.
+
 2015-12-18  Dominik Vogt  <vogt@linux.vnet.ibm.com>
 
        * config/s390/s390.c (s390_init_frame_layout): Try r4 to r2 for the
index 97edf8c481699ded38e3ed9c7975de28a1256786..9824e4a6d89f741b66ae53df0f2773f265ce227e 100644 (file)
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -1800,7 +1800,13 @@ ira_setup_alts (rtx_insn *insn, HARD_REG_SET &alts)
            {
              insn_constraints[nop * recog_data.n_alternatives + nalt] = p;
              while (*p && *p != ',')
-               p++;
+               {
+                 /* We only support one commutative marker, the first
+                    one.  We already set commutative above.  */
+                 if (*p == '%' && commutative < 0)
+                   commutative = nop;
+                 p++;
+               }
              if (*p)
                p++;
            }
@@ -1831,11 +1837,7 @@ ira_setup_alts (rtx_insn *insn, HARD_REG_SET &alts)
                    break;
                  
                  case '%':
-                   /* We only support one commutative marker, the
-                      first one.  We already set commutative
-                      above.  */
-                   if (commutative < 0)
-                     commutative = nop;
+                   /* The commutative modifier is handled above.  */
                    break;
 
                  case '0':  case '1':  case '2':  case '3':  case '4':