aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>2015-12-18 10:39:52 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2015-12-18 10:39:52 +0000
commit3f12f020c62b9f460febb59053e312f5ff298bec (patch)
treef55e864a214a00409c29569c48fe8b164b76d5bd /gcc
parent10148d74d8138f12423160893b4100cf7b034896 (diff)
downloadgcc-3f12f020c62b9f460febb59053e312f5ff298bec.zip
gcc-3f12f020c62b9f460febb59053e312f5ff298bec.tar.gz
gcc-3f12f020c62b9f460febb59053e312f5ff298bec.tar.bz2
IRA: Fix % constraint modifier handling on disabled alternatives.
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ira.c14
2 files changed, 13 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 802c8b8..803dbd7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/ira.c b/gcc/ira.c
index 97edf8c..9824e4a 100644
--- 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':