From 346848622660e06b352613d425fe6ad67194ed14 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Tue, 30 Mar 2021 14:08:48 +0200 Subject: [PATCH] x86: drop REGNAM_{AL,AX,EAX} The former two are unused anyway. And having such constants isn't very helpful either, when they live in a place where updating the register table wouldn't even allow noticing the need to adjust these constants. --- gas/ChangeLog | 8 ++++++++ gas/config/tc-i386-intel.c | 4 ++-- gas/config/tc-i386.c | 8 +++++++- opcodes/ChangeLog | 4 ++++ opcodes/i386-opc.h | 5 ----- 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 468be74256c..210a93858d4 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,11 @@ +2021-03-30 Jan Beulich + + * config/tc-i386.c (reg_eax): New. + (md_begin): Initialize reg_eax. + * config/tc-i386-intel.c (i386_intel_simplify_register): Use + reg_eax. + (i386_intel_simplify): Likewise. + 2021-03-30 Jan Beulich * config/tc-i386.c (reg_st0): New. diff --git a/gas/config/tc-i386-intel.c b/gas/config/tc-i386-intel.c index 4c9f0b70520..e61e7572fc9 100644 --- a/gas/config/tc-i386-intel.c +++ b/gas/config/tc-i386-intel.c @@ -335,7 +335,7 @@ i386_intel_simplify_register (expressionS *e) else { /* esp is invalid as index */ - intel_state.index = i386_regtab + REGNAM_EAX + ESP_REG_NUM; + intel_state.index = reg_eax + ESP_REG_NUM; } return 2; } @@ -500,7 +500,7 @@ static int i386_intel_simplify (expressionS *e) break; default: /* esp is invalid as index */ - intel_state.index = i386_regtab + REGNAM_EAX + ESP_REG_NUM; + intel_state.index = reg_eax + ESP_REG_NUM; break; } diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 3a7d50484ff..7fa31dab553 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -214,6 +214,7 @@ static const char *default_arch = DEFAULT_ARCH; static const reg_entry bad_reg = { "", OPERAND_TYPE_NONE, 0, 0, { Dw2Inval, Dw2Inval } }; +static const reg_entry *reg_eax; static const reg_entry *reg_st0; static const reg_entry *reg_k0; @@ -3091,7 +3092,12 @@ md_begin (void) switch (regtab->reg_type.bitfield.class) { case Reg: - if (regtab->reg_type.bitfield.tbyte) + if (regtab->reg_type.bitfield.dword) + { + if (regtab->reg_type.bitfield.instance == Accum) + reg_eax = regtab; + } + else if (regtab->reg_type.bitfield.tbyte) { /* There's no point inserting st() in the hash table, as parentheses aren't included in register_chars[] anyway. */ diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 5acb021fa48..fb5b8c75ecf 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,7 @@ +2021-03-30 Jan Beulich + + * i386-opc.h (REGNAM_AL, REGNAM_AX, REGNAM_EAX): Delete. + 2021-03-30 Jan Beulich * i386-opc.h (REGNAM_AL, REGNAM_AX, REGNAM_EAX): Adjust values. diff --git a/opcodes/i386-opc.h b/opcodes/i386-opc.h index a2a657eeda0..9c451defc93 100644 --- a/opcodes/i386-opc.h +++ b/opcodes/i386-opc.h @@ -990,11 +990,6 @@ typedef struct } reg_entry; -/* Entries in i386_regtab. */ -#define REGNAM_AL 0 -#define REGNAM_AX 24 -#define REGNAM_EAX 40 - extern const reg_entry i386_regtab[]; extern const unsigned int i386_regtab_size; -- 2.30.2