diff options
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 7 | ||||
-rw-r--r-- | gas/config/tc-i386.c | 22 |
2 files changed, 22 insertions, 7 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 68dec63..c6b68fd 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,12 @@ 2009-12-16 H.J. Lu <hongjiu.lu@intel.com> + * config/tc-i386.c (process_suffix): Set i.suffix to 0 in + Intel syntax if size is ignored and b/l/w suffixes are + illegal. + (check_byte_reg): Remove byteokintel check. + +2009-12-16 H.J. Lu <hongjiu.lu@intel.com> + * config/tc-i386.c (build_vex_prefix): Replace vex0f, vex0f38, vex0f3a, xop08, xop09 and xop0a with vexopcode. diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index bd4ca3d..d29d07c 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -4178,12 +4178,20 @@ process_suffix (void) } else if (i.suffix == BYTE_MNEM_SUFFIX) { - if (!check_byte_reg ()) + if (intel_syntax + && i.tm.opcode_modifier.ignoresize + && i.tm.opcode_modifier.no_bsuf) + i.suffix = 0; + else if (!check_byte_reg ()) return 0; } else if (i.suffix == LONG_MNEM_SUFFIX) { - if (!check_long_reg ()) + if (intel_syntax + && i.tm.opcode_modifier.ignoresize + && i.tm.opcode_modifier.no_lsuf) + i.suffix = 0; + else if (!check_long_reg ()) return 0; } else if (i.suffix == QWORD_MNEM_SUFFIX) @@ -4197,7 +4205,11 @@ process_suffix (void) } else if (i.suffix == WORD_MNEM_SUFFIX) { - if (!check_word_reg ()) + if (intel_syntax + && i.tm.opcode_modifier.ignoresize + && i.tm.opcode_modifier.no_wsuf) + i.suffix = 0; + else if (!check_word_reg ()) return 0; } else if (i.suffix == XMMWORD_MNEM_SUFFIX @@ -4375,10 +4387,6 @@ check_byte_reg (void) if (i.types[op].bitfield.reg8) continue; - /* Don't generate this warning if not needed. */ - if (intel_syntax && i.tm.opcode_modifier.byteokintel) - continue; - /* crc32 doesn't generate this warning. */ if (i.tm.base_opcode == 0xf20f38f0) continue; |