x86: drop sentinel from i386_optab[]
authorJan Beulich <jbeulich@suse.com>
Mon, 12 Dec 2022 07:49:00 +0000 (08:49 +0100)
committerJan Beulich <jbeulich@suse.com>
Mon, 12 Dec 2022 07:49:00 +0000 (08:49 +0100)
Now that the table is local to gas, ARRAY_SIZE() can be used to
determine the end of the table. Re-arrange the processing loop in
md_begin() accordingly, at the same time folding the two calls to
notes_alloc() into just one.

gas/config/tc-i386.c
opcodes/i386-gen.c
opcodes/i386-tbl.h

index e68ff2fafbf6ab0a33dcc9fd545c1ae23fda0a95..fce8631f78d91e57632ddf378e453dbda0eda8df 100644 (file)
@@ -2973,31 +2973,20 @@ md_begin (void)
   op_hash = str_htab_create ();
 
   {
-    const insn_template *optab;
-    templates *core_optab;
+    const insn_template *optab = i386_optab;
+    const insn_template *end = optab + ARRAY_SIZE (i386_optab);
 
-    /* Setup for loop.  */
-    optab = i386_optab;
-    core_optab = notes_alloc (sizeof (*core_optab));
-    core_optab->start = optab;
-
-    while (1)
+    while (optab < end)
       {
-       ++optab;
-       if (optab->name == NULL
-           || strcmp (optab->name, (optab - 1)->name) != 0)
-         {
-           /* different name --> ship out current template list;
-              add to hash table; & begin anew.  */
-           core_optab->end = optab;
-           if (str_hash_insert (op_hash, (optab - 1)->name, core_optab, 0))
-             as_fatal (_("duplicate %s"), (optab - 1)->name);
+       templates *core_optab = notes_alloc (sizeof (*core_optab));
 
-           if (optab->name == NULL)
-             break;
-           core_optab = notes_alloc (sizeof (*core_optab));
-           core_optab->start = optab;
-         }
+       core_optab->start = optab;
+       while (++optab < end)
+         if (strcmp (optab->name, optab[-1].name) != 0)
+           break;
+       core_optab->end = optab;
+       if (str_hash_insert (op_hash, optab[-1].name, core_optab, 0))
+         as_fatal (_("duplicate %s"), optab[-1].name);
       }
   }
 
index 5551008a50a2467d3e683edfd1bf9abf367c075a..f14384231d62fc1c4b13caa40595c00383a49b54 100644 (file)
@@ -1818,16 +1818,6 @@ process_i386_opcodes (FILE *table)
 
   fclose (fp);
 
-  fprintf (table, "  { NULL, 0, 0, 0,\n");
-
-  process_i386_opcode_modifier (table, "0", 0, 0, NULL, -1);
-
-  process_i386_cpu_flag (table, "0", 0, ",", "    ", -1);
-
-  fprintf (table, "    { ");
-  process_i386_operand_type (table, "0", stage_opcodes, "\t  ", -1);
-  fprintf (table, " } }\n");
-
   fprintf (table, "};\n");
 }
 
index ff84e222ffe86fa5536835c0e76806c4d217f220..27be4c55dc118a09cea607946778ae4629873141 100644 (file)
@@ -59836,19 +59836,6 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
-  { NULL, 0, 0, 0,
-    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-      0, 0 },
-    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
-    { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         0, 0, 0, 0, 0, 0 } } } }
 };
 
 /* i386 register table.  */