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
This commit is contained in:
parent
ef98992790
commit
7e3aa04196
|
@ -1,3 +1,9 @@
|
|||
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>
|
||||
|
||||
PR java/13824
|
||||
|
|
17
gcc/reload.c
17
gcc/reload.c
|
@ -2605,7 +2605,17 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
|
|||
if (i == noperands - 1)
|
||||
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))
|
||||
{
|
||||
|
@ -2979,9 +2989,8 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
|
|||
break;
|
||||
|
||||
case '%':
|
||||
/* The last operand should not be marked commutative. */
|
||||
if (i != noperands - 1)
|
||||
commutative = i;
|
||||
/* We only support one commutative marker, the first
|
||||
one. We already set commutative above. */
|
||||
break;
|
||||
|
||||
case '?':
|
||||
|
|
Loading…
Reference in New Issue