gas/arc: Handle multiple arc_opcode chains for same mnemonic
authorAndrew Burgess <andrew.burgess@embecosm.com>
Mon, 28 Mar 2016 16:08:29 +0000 (17:08 +0100)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Thu, 7 Apr 2016 17:36:09 +0000 (18:36 +0100)
commit1328504b287b2c284419d989e0d05e7d6d3ffa59
tree45a264789dd04357b0f0509139786c9e6ee368a7
parentb9b47ab79f7c3de0537cacfac061560d5811a84a
gas/arc: Handle multiple arc_opcode chains for same mnemonic

This commit completes support for having multiple instructions with the
same mnemonic in non-contiguous blocks within the arc_opcodes table.

The commit adds an iterator mechanism for the arc_opcode_hash_entry
structure, which is then used in find_opcode_match to consider all
arc_opcode entries with the same mnemonic, even when these instructions
are stored in non-contiguous blocks.

I extend the comment on the arc_opcodes table to discuss how entries
within the table are organised, and to mention how instructions can be
split into multiple groups if needed, but that the table is still
searched in table order.

There should be no user visible changes after this commit.

gas/ChangeLog:

* config/tc-arc.c (struct arc_opcode_hash_entry_iterator): New
structure.
(arc_opcode_hash_entry_iterator_init): New function.
(arc_opcode_hash_entry_iterator_next): New function.
(find_opcode_match): Iterate over all arc_opcode entries
referenced by the arc_opcode_hash_entry passed in as a parameter.

opcodes/ChangeLog:

* arc-opc.c (arc_opcodes): Extend comment to discus table layout.
gas/ChangeLog
gas/config/tc-arc.c
opcodes/ChangeLog
opcodes/arc-opc.c