RISC-V: remove indirection from register tables
authorJan Beulich <jbeulich@suse.com>
Tue, 15 Aug 2023 06:34:56 +0000 (08:34 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 15 Aug 2023 06:34:56 +0000 (08:34 +0200)
commit02a63525ef02bac47fa750e89db0996bc96697d3
tree2d704013bbc897da397f9e90246e188e4e10e91b
parenta2182c73d245530c5c5587bc47a6142e9738de84
RISC-V: remove indirection from register tables

The longest register name is 4 characters (plus a nul one), so using a
4- or 8-byte pointer to get at it is neither space nor time efficient.
Embed the names right into the array. For PIE this also reduces the
number of base relocations in the final image.

To avoid old gcc, when generating 32-bit code, bogusly warning about
bounds being exceeded in the code processing Cs/Cw, Ct/Cx, and CD,
an adjustment to EXTRACT_BITS() is needed: This macro shouldn't supply
a 64-bit value, and it also doesn't need to - all operand fields to
date are far more narrow than 32 bits. This in turn allows dropping a
number of casts elsewhere.
gas/config/tc-riscv.c
include/opcode/riscv.h
opcodes/riscv-dis.c
opcodes/riscv-opc.c