1From 7ef6b16d688b3a7911e1cb41384630bb188635f8 Mon Sep 17 00:00:00 2001
2From: Michael Forney <mforney@mforney.org>
3Date: Sat, 25 Apr 2026 17:24:26 -0700
4Subject: [PATCH] x86: expand non-standard a...b case labels
5
6---
7 gas/config/tc-i386-ginsn.c | 17 ++++++++++++-----
8 1 file changed, 12 insertions(+), 5 deletions(-)
9
10diff --git a/gas/config/tc-i386-ginsn.c b/gas/config/tc-i386-ginsn.c
11index 89bd6f3a0da..951683dfdd0 100644
12--- a/gas/config/tc-i386-ginsn.c
13+++ b/gas/config/tc-i386-ginsn.c
14@@ -833,7 +833,8 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
15 gas_assert (!ginsn_link_next (ginsn, ginsn_next));
16 break;
17
18- case 0x50 ... 0x57:
19+ case 0x50: case 0x51: case 0x52: case 0x53:
20+ case 0x54: case 0x55: case 0x56: case 0x57:
21 if (i.tm.opcode_space != SPACE_BASE)
22 break;
23 /* push reg. */
24@@ -853,7 +854,8 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
25 gas_assert (!ginsn_link_next (ginsn, ginsn_next));
26 break;
27
28- case 0x58 ... 0x5f:
29+ case 0x58: case 0x59: case 0x5a: case 0x5b:
30+ case 0x5c: case 0x5d: case 0x5e: case 0x5f:
31 if (i.tm.opcode_space != SPACE_BASE)
32 break;
33 /* pop reg. */
34@@ -897,7 +899,10 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
35 /* PS: Opcodes 0x80 ... 0x8f with opcode_space SPACE_0F are present
36 only after relaxation. They do not need to be handled for ginsn
37 creation. */
38- case 0x70 ... 0x7f:
39+ case 0x70: case 0x71: case 0x72: case 0x73:
40+ case 0x74: case 0x75: case 0x76: case 0x77:
41+ case 0x78: case 0x79: case 0x7a: case 0x7b:
42+ case 0x7c: case 0x7d: case 0x7e: case 0x7f:
43 if (i.tm.opcode_space != SPACE_BASE)
44 break;
45 ginsn = x86_ginsn_jump (insn_end_sym, true);
46@@ -1061,8 +1066,10 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
47 ginsn = x86_ginsn_leave (insn_end_sym);
48 break;
49
50- case 0xe0 ... 0xe2: /* loop / loope / loopne. */
51- case 0xe3: /* jecxz / jrcxz. */
52+ case 0xe0: /* loop. */
53+ case 0xe1: /* loope. */
54+ case 0xe2: /* loopne. */
55+ case 0xe3: /* jecxz / jrcxz. */
56 if (i.tm.opcode_space != SPACE_BASE)
57 break;
58 ginsn = x86_ginsn_jump (insn_end_sym, true);
59--
602.49.0
61