mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
tcg: Fix indirect lowering vs TCG_OPF_COND_BRANCH
With TCG_OPF_COND_BRANCH, we extended the lifetimes of
globals across extended basic blocks. This means that
the liveness computed in pass 1 does not kill globals
in the same way as normal temps.
Introduce TYPE_EBB to match this lifetime, so that we
get correct register allocation for the temps that we
introduce during the indirect lowering pass.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Fixes: b4cb76e620
("tcg: Do not kill globals at conditional branches")
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
55d71e0b78
commit
c74824389e
2 changed files with 29 additions and 7 deletions
|
@ -433,6 +433,8 @@ typedef enum TCGTempVal {
|
|||
typedef enum TCGTempKind {
|
||||
/* Temp is dead at the end of all basic blocks. */
|
||||
TEMP_NORMAL,
|
||||
/* Temp is live across conditional branch, but dead otherwise. */
|
||||
TEMP_EBB,
|
||||
/* Temp is saved across basic blocks but dead at the end of TBs. */
|
||||
TEMP_LOCAL,
|
||||
/* Temp is saved across both basic blocks and translation blocks. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue