From: Jan Beulich Date: Wed, 30 Nov 2022 08:10:17 +0000 (+0100) Subject: x86/Intel: adjustment to restricted suffix derivation X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fcaf78fe4d05b0516304f6b8a3be1ba1d74cbbeb;p=binutils-gdb.git x86/Intel: adjustment to restricted suffix derivation In "x86/Intel: restrict suffix derivation" I think I screwed up slightly, bringing a piece of code out of sync with its comment, and resulting in a suffix potentially being derived when one isn't needed. --- diff --git a/gas/config/tc-i386-intel.c b/gas/config/tc-i386-intel.c index 152e8e8ce24..ce4be6ac7dd 100644 --- a/gas/config/tc-i386-intel.c +++ b/gas/config/tc-i386-intel.c @@ -841,11 +841,16 @@ i386_intel_operand (char *operand_string, int got_a_float) abort (); } + /* We can skip templates with swappable operands here, as one + operand will be a register, which operand size can be + determined from. */ + if (t->opcode_modifier.d) + continue; + /* In a few cases suffixes are permitted, but we can nevertheless derive that these aren't going to be needed. This is only of - interest for insns using ModR/M, plus we can skip templates with - swappable operands here (simplifying subsequent logic). */ - if (!t->opcode_modifier.modrm || t->opcode_modifier.d) + interest for insns using ModR/M. */ + if (!t->opcode_modifier.modrm) break; if (!t->operand_types[op].bitfield.baseindex)