[fpc-devel] "Blank slate" next version of FPC
jonas at freepascal.org
Sat Feb 23 11:27:46 CET 2019
On 23/02/2019 01:30, J. Gareth Moreton wrote:
> Given that the reference is an offset from %rbp, the compiler will know
> for sure that the variable is local, so there won't be any problems with
> multi-threading that prevents a lot of temporary register storage for
> safety reasons.
Unpacking records could be done if their address is not taken anywhere.
The compiler already supports keeping records in registers under the
same conditions, but only up to a certain size (two native registers)
and only using the same layout as they would have in memory (so no
explicit splitting out fields into separate registers).
On x86, it does this less often than on other architectures, because
that architecture does not have efficient instructions to extract/insert
bits from/into registers. However, one improvement that could be made
there in the compiler is to ignore this fact if every field of the
record already corresponds to exactly one register.
More information about the fpc-devel