I was unhappy about the complexity of the second try. Better to convert to normal temps, allowing in rare occasions, spilling the "globals" to the stack in order to satisfy register allocation.
I can no longer provoke an allocation failure on i686. Hopefully this fixes the OpenBSD case that Mark mentioned re the second attempt. r~ Richard Henderson (9): tcg: Fix name for high-half register tcg: Optimize spills of constants tcg: Require liveness analysis tcg: Compress liveness data to 16 bits tcg: Reorg TCGOp chaining tcg: Fold life data into TCGOp tcg: Compress dead_temps and mem_temps into a single array tcg: Include liveness info in the dumps tcg: Lower indirect registers in a separate pass include/exec/gen-icount.h | 2 +- include/qemu/log.h | 1 + tcg/aarch64/tcg-target.inc.c | 10 + tcg/arm/tcg-target.inc.c | 6 + tcg/i386/tcg-target.inc.c | 21 +- tcg/ia64/tcg-target.inc.c | 10 + tcg/mips/tcg-target.inc.c | 10 + tcg/optimize.c | 37 +-- tcg/ppc/tcg-target.inc.c | 6 + tcg/s390/tcg-target.inc.c | 6 + tcg/sparc/tcg-target.inc.c | 10 + tcg/tcg-op.c | 2 +- tcg/tcg.c | 690 ++++++++++++++++++++++++++++--------------- tcg/tcg.h | 50 ++-- tcg/tci/tcg-target.inc.c | 6 + util/log.c | 5 +- 16 files changed, 563 insertions(+), 309 deletions(-) -- 2.5.5