mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-03 04:12:10 +08:00
PR 2512.
* config/tc-i386.c (match_template): Move 64-bit operand tests inside loop.
This commit is contained in:
parent
35520cb708
commit
45aa61fe2e
@ -1,3 +1,9 @@
|
||||
2006-04-07 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
PR 2512.
|
||||
* config/tc-i386.c (match_template): Move 64-bit operand tests
|
||||
inside loop.
|
||||
|
||||
2006-04-06 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* po/Make-in: Add install-html target.
|
||||
|
@ -2263,19 +2263,7 @@ match_template ()
|
||||
: (i.suffix == LONG_DOUBLE_MNEM_SUFFIX
|
||||
? No_xSuf : 0))))));
|
||||
|
||||
t = current_templates->start;
|
||||
if (i.suffix == QWORD_MNEM_SUFFIX
|
||||
&& flag_code != CODE_64BIT
|
||||
&& (intel_syntax
|
||||
? !(t->opcode_modifier & IgnoreSize)
|
||||
&& !intel_float_operand (t->name)
|
||||
: intel_float_operand (t->name) != 2)
|
||||
&& (!(t->operand_types[0] & (RegMMX | RegXMM))
|
||||
|| !(t->operand_types[t->operands > 1] & (RegMMX | RegXMM)))
|
||||
&& (t->base_opcode != 0x0fc7
|
||||
|| t->extension_opcode != 1 /* cmpxchg8b */))
|
||||
t = current_templates->end;
|
||||
for (; t < current_templates->end; t++)
|
||||
for (t = current_templates->start; t < current_templates->end; t++)
|
||||
{
|
||||
/* Must have right number of operands. */
|
||||
if (i.operands != t->operands)
|
||||
@ -2287,6 +2275,19 @@ match_template ()
|
||||
&& (t->opcode_modifier & IgnoreSize)))
|
||||
continue;
|
||||
|
||||
/* In general, don't allow 64-bit operands in 32-bit mode. */
|
||||
if (i.suffix == QWORD_MNEM_SUFFIX
|
||||
&& flag_code != CODE_64BIT
|
||||
&& (intel_syntax
|
||||
? (!(t->opcode_modifier & IgnoreSize)
|
||||
&& !intel_float_operand (t->name))
|
||||
: intel_float_operand (t->name) != 2)
|
||||
&& (!(t->operand_types[0] & (RegMMX | RegXMM))
|
||||
|| !(t->operand_types[t->operands > 1] & (RegMMX | RegXMM)))
|
||||
&& (t->base_opcode != 0x0fc7
|
||||
|| t->extension_opcode != 1 /* cmpxchg8b */))
|
||||
continue;
|
||||
|
||||
/* Do not verify operands when there are none. */
|
||||
else if (!t->operands)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user