Add reglap to ncg. Add 4-byte reg_float to PowerPC ncg.
authorGeorge Koehler <xkernigh@netscape.net>
Sat, 14 Oct 2017 16:40:04 +0000 (12:40 -0400)
committerGeorge Koehler <xkernigh@netscape.net>
Sat, 14 Oct 2017 16:40:04 +0000 (12:40 -0400)
commit7e9348169ccaad8b7eca237d16989992bb05e81c
treee64aab137e8c736d5ad66ae6deff0eae9a970c8e
parent2c266c631a357048bd3026b9e8259a3526c98bf7
Add reglap to ncg.  Add 4-byte reg_float to PowerPC ncg.

The new feature "reglap" allows two sizes of floating-point register
variables (reg_float), if each register overlaps a single register of
the other size.  PowerPC ncg uses reglap to define 4-byte instances
of f14 to f31 that overlap the 8-byte instances.

When ncgg sees the definition of fs14("f14")=f14, it removes the
8-byte f14 from its rvnumbers array, and adds the 4-byte fs14 in its
place.  Later, when ncg puts a variable in fs14, if it is an 8-byte
variable, then ncg switches to the 8-byte f14.  The code has
/* reglap */ comments in util/ncgg or #ifdef REGLAP in mach/proto/ncg

reglap became necessary because my commit a20b87c caused PowerPC ego
to allocate reg_float in both 4-byte and 8-byte sizes.
mach/powerpc/ncg/mach.c
mach/powerpc/ncg/table
mach/proto/ncg/regvar.c
util/ncgg/expr.c
util/ncgg/output.c
util/ncgg/regvar.h
util/ncgg/subr.c
util/ncgg/var.c