]> git.proxmox.com Git - mirror_qemu.git/commit
tcg: Lower indirect registers in a separate pass
authorRichard Henderson <rth@twiddle.net>
Fri, 24 Jun 2016 03:34:33 +0000 (20:34 -0700)
committerRichard Henderson <rth@twiddle.net>
Fri, 5 Aug 2016 16:14:40 +0000 (21:44 +0530)
commit5a18407f55ade924aa6397c9a043a9ffd59645fe
tree9d90c54eca81527f3f423e2daf7b29eccc32a35e
parentc0ef05b5e62ab0c291a94022f14104e61e306f03
tcg: Lower indirect registers in a separate pass

Rather than rely on recursion during the middle of register allocation,
lower indirect registers to loads and stores off the indirect base into
plain temps.

For an x86_64 host, with sufficient registers, this results in identical
code, modulo the actual register assignments.

For an i686 host, with insufficient registers, this means that temps can
be (temporarily) spilled to the stack in order to satisfy an allocation.
This as opposed to the possibility of not being able to spill, to allocate
a register for the indirect base, in order to perform a spill.

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
include/qemu/log.h
tcg/optimize.c
tcg/tcg.c
tcg/tcg.h
util/log.c