x86: drop sentinel from i386_optab[]

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.
This commit is contained in:
Jan Beulich
2022-12-12 08:49:00 +01:00
parent 313095ba2d
commit daf15e3e96
3 changed files with 11 additions and 45 deletions

View 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);
}
}

View 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");
}

View 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. */