diff --git a/tcg/wasm32/tcg-target.c.inc b/tcg/wasm32/tcg-target.c.inc index bbdb2de88f..4298fbe598 100644 --- a/tcg/wasm32/tcg-target.c.inc +++ b/tcg/wasm32/tcg-target.c.inc @@ -3372,6 +3372,13 @@ static void tcg_out_qemu_st(TCGContext *s, TCGOpcode opc, const TCGArg *args, bo { tcg_tci_out_qemu_ldst(s, opc, args); tcg_wasm_out_qemu_st(s, args, is_64); + /* ponytail: Store-Containing TBs Run on TCI - The compiled wasm store path miscompiles a TB + * containing a guest store (corrupts a pointer a later load faults on; reproduces in uzlib + * inflate during reader font prewarm, native is fine). Forcing these TBs to the interpreter is + * the working workaround. Ceiling: every store-containing TB is interpreted (perf cost). Upgrade + * path: localize the miscompiled op in tcg_wasm_out_qemu_st and drop this. See + * docs/wasm-inflate-panic.md. */ + wasm_tci_only_tb = true; } static void tcg_out_deposit_i32(TCGContext *s, TCGOpcode opc, TCGReg dest, TCGReg arg1, TCGReg arg2, int pos, int len) {