diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2022-03-16 09:34:18 -0700 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2022-04-20 12:12:47 -0700 |
commit | c74824389e1a56781f947e23da68742e8faeaf77 (patch) | |
tree | 20821757f9162e18b2943a4e9872e8522090e276 /include/tcg | |
parent | 55d71e0b784e03dbd15bc13d75af88ed5340fde8 (diff) | |
download | qemu-c74824389e1a56781f947e23da68742e8faeaf77.zip qemu-c74824389e1a56781f947e23da68742e8faeaf77.tar.gz qemu-c74824389e1a56781f947e23da68742e8faeaf77.tar.bz2 |
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: b4cb76e6208 ("tcg: Do not kill globals at conditional branches")
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'include/tcg')
-rw-r--r-- | include/tcg/tcg.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index 73869fd..27de13f 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -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. */ |