diff options
author | Jan Beulich <jbeulich@novell.com> | 2012-07-31 07:43:38 +0000 |
---|---|---|
committer | Jan Beulich <jbeulich@novell.com> | 2012-07-31 07:43:38 +0000 |
commit | 5a819eb989d050f32a06af6c40e9b5eef4becabb (patch) | |
tree | dc01f2991e884b2d3091e68e7813e1e4dfeb9e96 /gas | |
parent | 5614d22c1d90a99acb57d6bcf74fdc32e2723bc5 (diff) | |
download | gdb-5a819eb989d050f32a06af6c40e9b5eef4becabb.zip gdb-5a819eb989d050f32a06af6c40e9b5eef4becabb.tar.gz gdb-5a819eb989d050f32a06af6c40e9b5eef4becabb.tar.bz2 |
Since the word to byte register conversion isn't active for x86-64
anyway, there's also no need to issue a separate, inconsistent
diagnostic in some of the cases - non-matching operands will be
complained about anyway.
2012-07-31 Jan Beulich <jbeulich@suse.com>
* config/tc-i386.c (check_byte_reg): Check for I/O port
register earlier, and just once. Drop diagnostic that got
issued only for some registers.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 6 | ||||
-rw-r--r-- | gas/config/tc-i386.c | 22 |
2 files changed, 15 insertions, 13 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 600871d..d474b3c 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,11 @@ 2012-07-31 Jan Beulich <jbeulich@suse.com> + * config/tc-i386.c (check_byte_reg): Check for I/O port + register earlier, and just once. Drop diagnostic that got + issued only for some registers. + +2012-07-31 Jan Beulich <jbeulich@suse.com> + * config/tc-i386.c (match_template): New local variable 'specific_error'. Set it from i.error after failed check_VecOperands or VEX_check_operands. Use it if set in diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index b8c08e8..70f21db 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -4734,6 +4734,10 @@ check_byte_reg (void) if (i.types[op].bitfield.reg8) continue; + /* I/O port address operands are OK too. */ + if (i.tm.operand_types[op].bitfield.inoutportreg) + continue; + /* crc32 doesn't generate this warning. */ if (i.tm.base_opcode == 0xf20f38f0) continue; @@ -4741,21 +4745,13 @@ check_byte_reg (void) if ((i.types[op].bitfield.reg16 || i.types[op].bitfield.reg32 || i.types[op].bitfield.reg64) - && i.op[op].regs->reg_num < 4) + && i.op[op].regs->reg_num < 4 + /* Prohibit these changes in 64bit mode, since the lowering + would be more complicated. */ + && flag_code != CODE_64BIT) { - /* Prohibit these changes in the 64bit mode, since the - lowering is more complicated. */ - if (flag_code == CODE_64BIT - && !i.tm.operand_types[op].bitfield.inoutportreg) - { - as_bad (_("incorrect register `%s%s' used with `%c' suffix"), - register_prefix, i.op[op].regs->reg_name, - i.suffix); - return 0; - } #if REGISTER_WARNINGS - if (!quiet_warnings - && !i.tm.operand_types[op].bitfield.inoutportreg) + if (!quiet_warnings) as_warn (_("using `%s%s' instead of `%s%s' due to `%c' suffix"), register_prefix, (i.op[op].regs + (i.types[op].bitfield.reg16 |