aboutsummaryrefslogtreecommitdiff
path: root/include/tcg
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2022-03-16 09:34:18 -0700
committerRichard Henderson <richard.henderson@linaro.org>2022-04-20 12:12:47 -0700
commitc74824389e1a56781f947e23da68742e8faeaf77 (patch)
tree20821757f9162e18b2943a4e9872e8522090e276 /include/tcg
parent55d71e0b784e03dbd15bc13d75af88ed5340fde8 (diff)
downloadqemu-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.h2
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. */