summaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2005-05-09 06:38:45 +0000
committerJan Beulich <jbeulich@novell.com>2005-05-09 06:38:45 +0000
commitbe97728fd1ed6330765eb291e26f3064bc1842dd (patch)
tree15955a0b7c8ed22b5e28836fd5288b237268fd8f /gas
parent96431b521a83017977ddaf05fc8ed3bb282be67d (diff)
downloadbinutils-redhat-be97728fd1ed6330765eb291e26f3064bc1842dd.tar.gz
gas/
2005-05-09 Jan Beulich <jbeulich@novell.com> * config/tc-i386.c (parse_insn): Consider all matching instructions when checking for string instruction after string-only prefix.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-i386.c22
2 files changed, 22 insertions, 5 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index d79fc664b5..f14c9f8f7b 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2005-05-09 Jan Beulich <jbeulich@novell.com>
+
+ * config/tc-i386.c (parse_insn): Consider all matching instructions
+ when checking for string instruction after string-only prefix.
+
2005-05-07 H.J. Lu <hongjiu.lu@intel.com>
PR 940
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 15db848037..7b26546402 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -1765,12 +1765,24 @@ parse_insn (line, mnemonic)
}
/* Check for rep/repne without a string instruction. */
- if (expecting_string_instruction
- && !(current_templates->start->opcode_modifier & IsString))
+ if (expecting_string_instruction)
{
- as_bad (_("expecting string instruction after `%s'"),
- expecting_string_instruction);
- return NULL;
+ static templates override;
+
+ for (t = current_templates->start; t < current_templates->end; ++t)
+ if (t->opcode_modifier & IsString)
+ break;
+ if (t >= current_templates->end)
+ {
+ as_bad (_("expecting string instruction after `%s'"),
+ expecting_string_instruction);
+ return NULL;
+ }
+ for (override.start = t; t < current_templates->end; ++t)
+ if (!(t->opcode_modifier & IsString))
+ break;
+ override.end = t;
+ current_templates = &override;
}
return l;