[binutils-gdb] x86: drop REGNAM_{AL,AX,EAX}

Jan Beulich jbeulich@sourceware.org
Tue Mar 30 12:09:53 GMT 2021


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=346848622660e06b352613d425fe6ad67194ed14

commit 346848622660e06b352613d425fe6ad67194ed14
Author: Jan Beulich <jbeulich@suse.com>
Date:   Tue Mar 30 14:08:48 2021 +0200

    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.

Diff:
---
 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  <jbeulich@suse.com>
+
+	* 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  <jbeulich@suse.com>
 
 	* 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 = { "<bad>", 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(<N>) 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  <jbeulich@suse.com>
+
+	* i386-opc.h (REGNAM_AL, REGNAM_AX, REGNAM_EAX): Delete.
+
 2021-03-30  Jan Beulich  <jbeulich@suse.com>
 
 	* 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;


More information about the Binutils-cvs mailing list