This is for lauchpad 1824853. The v1 patch set fixed this for x86 as a host. This goes further to handle the other cases in which a TB can become too large, resulting in overflows from relocations.
Finally, the last two patches take advantage of this. Since we now have a reliable way to try again if a relocation overflows, we can avoid adding extra nops on the off-chance we have to deal with very large TBs. There is possibly room for additional work in tcg/riscv, with respect to its short conditional branches. But that's probably best left to someone who can test that properly. r~ Richard Henderson (7): tcg: Hoist max_insns computation to tb_gen_code tcg: Restart after TB code generation overflow tcg: Restart TB generation after relocation overflow tcg: Restart TB generation after constant pool overflow tcg: Restart TB generation after out-of-line ldst overflow tcg/ppc: Allow the constant pool to overflow at 32k tcg/arm: Restrict constant pool displacement to 12 bits include/exec/exec-all.h | 4 +- include/exec/translator.h | 3 +- tcg/tcg.h | 15 +++---- accel/tcg/translate-all.c | 53 +++++++++++++++++++---- accel/tcg/translator.c | 15 +------ target/alpha/translate.c | 4 +- target/arm/translate.c | 4 +- target/cris/translate.c | 10 +---- target/hppa/translate.c | 5 +-- target/i386/translate.c | 4 +- target/lm32/translate.c | 10 +---- target/m68k/translate.c | 4 +- target/microblaze/translate.c | 10 +---- target/mips/translate.c | 4 +- target/moxie/translate.c | 11 +---- target/nios2/translate.c | 14 +----- target/openrisc/translate.c | 4 +- target/ppc/translate.c | 4 +- target/riscv/translate.c | 4 +- target/s390x/translate.c | 4 +- target/sh4/translate.c | 4 +- target/sparc/translate.c | 4 +- target/tilegx/translate.c | 12 +----- target/tricore/translate.c | 16 +------ target/unicore32/translate.c | 10 +---- target/xtensa/translate.c | 4 +- tcg/aarch64/tcg-target.inc.c | 16 ++++--- tcg/arm/tcg-target.inc.c | 73 ++++++++++++++----------------- tcg/i386/tcg-target.inc.c | 6 ++- tcg/mips/tcg-target.inc.c | 6 ++- tcg/ppc/tcg-target.inc.c | 42 +++++++++--------- tcg/riscv/tcg-target.inc.c | 16 +++++-- tcg/s390/tcg-target.inc.c | 20 +++++---- tcg/tcg-ldst.inc.c | 18 ++++---- tcg/tcg-pool.inc.c | 12 +++--- tcg/tcg.c | 81 ++++++++++++++++++----------------- 36 files changed, 246 insertions(+), 280 deletions(-) -- 2.17.1