Commit 7e3aa041 by Ian Lance Taylor Committed by Ian Lance Taylor

re PR inline-asm/6162 (i386 asm reloader ice in reload_cse_simplify_operands)

	PR inline-asm/6162
	* reload.c (find_reloads): Only support one pair of commutative
	operands.

From-SVN: r76886
parent ef989927
2004-01-28 Ian Lance Taylor <ian@wasabisystems.com>
PR inline-asm/6162
* reload.c (find_reloads): Only support one pair of commutative
operands.
2004-01-29 Roger Sayle <roger@eyesopen.com> 2004-01-29 Roger Sayle <roger@eyesopen.com>
PR java/13824 PR java/13824
......
...@@ -2605,7 +2605,17 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known, ...@@ -2605,7 +2605,17 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
if (i == noperands - 1) if (i == noperands - 1)
abort (); abort ();
commutative = i; /* We currently only support one commutative pair of
operands. Some existing asm code currently uses more
than one pair. Previously, that would usually work,
but sometimes it would crash the compiler. We
continue supporting that case as well as we can by
silently ignoring all but the first pair. In the
future we may handle it correctly. */
if (commutative < 0)
commutative = i;
else if (!this_insn_is_asm)
abort ();
} }
else if (ISDIGIT (c)) else if (ISDIGIT (c))
{ {
...@@ -2979,9 +2989,8 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known, ...@@ -2979,9 +2989,8 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
break; break;
case '%': case '%':
/* The last operand should not be marked commutative. */ /* We only support one commutative marker, the first
if (i != noperands - 1) one. We already set commutative above. */
commutative = i;
break; break;
case '?': case '?':
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment