From 6f2f06bea87613a6851607829e5893d74007f5bf Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Thu, 14 Nov 2019 08:47:03 +0100 Subject: x86: make JumpAbsolute an insn attribute ... instead of an operand one: There's only ever one operand here anyway. --- gas/config/tc-i386-intel.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'gas/config/tc-i386-intel.c') diff --git a/gas/config/tc-i386-intel.c b/gas/config/tc-i386-intel.c index 2116e49..fd71afb 100644 --- a/gas/config/tc-i386-intel.c +++ b/gas/config/tc-i386-intel.c @@ -743,17 +743,19 @@ i386_intel_operand (char *operand_string, int got_a_float) || current_templates->start->opcode_modifier.jumpdword || current_templates->start->opcode_modifier.jumpintersegment) { + bfd_boolean jumpabsolute = FALSE; + if (i.op[this_operand].regs || intel_state.base || intel_state.index || intel_state.is_mem > 1) - i.types[this_operand].bitfield.jumpabsolute = 1; + jumpabsolute = TRUE; else switch (intel_state.op_modifier) { case O_near_ptr: if (intel_state.seg) - i.types[this_operand].bitfield.jumpabsolute = 1; + jumpabsolute = TRUE; else intel_state.is_mem = 1; break; @@ -765,14 +767,14 @@ i386_intel_operand (char *operand_string, int got_a_float) if (intel_state.op_modifier == O_absent) { if (intel_state.is_indirect == 1) - i.types[this_operand].bitfield.jumpabsolute = 1; + jumpabsolute = TRUE; break; } as_bad (_("cannot infer the segment part of the operand")); return 0; } else if (S_GET_SEGMENT (intel_state.seg) == reg_section) - i.types[this_operand].bitfield.jumpabsolute = 1; + jumpabsolute = TRUE; else { i386_operand_type types; @@ -806,11 +808,14 @@ i386_intel_operand (char *operand_string, int got_a_float) } break; default: - i.types[this_operand].bitfield.jumpabsolute = 1; + jumpabsolute = TRUE; break; } - if (i.types[this_operand].bitfield.jumpabsolute) - intel_state.is_mem |= 1; + if (jumpabsolute) + { + i.jumpabsolute = TRUE; + intel_state.is_mem |= 1; + } } else if (intel_state.seg) intel_state.is_mem |= 1; -- cgit v1.1