[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 10/26] tcg: don't explicitly save globals and tem
From: |
Aurelien Jarno |
Subject: |
[Qemu-devel] [PATCH v2 10/26] tcg: don't explicitly save globals and temps |
Date: |
Tue, 9 Oct 2012 21:56:08 +0200 |
The liveness analysis ensures that globals and temps are at the correct
state at a basic block end or with an op with side effects. Avoid
looping on all temps, this can be time consuming on targets with a lot
of globals. Keep an assert in debug mode.
Signed-off-by: Aurelien Jarno <address@hidden>
---
tcg/tcg.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 5262454..3983ec3 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -1601,8 +1601,14 @@ static inline void temp_sync(TCGContext *s, int temp,
TCGRegSet allocated_regs)
temporary registers needs to be allocated to store a constant. */
static inline void temp_save(TCGContext *s, int temp, TCGRegSet allocated_regs)
{
+#ifdef USE_LIVENESS_ANALYSIS
+ /* The liveness analysis already ensures that globals are back
+ in memory. Keep an assert for safety. */
+ assert(s->temps[temp].val_type == TEMP_VAL_MEM ||
s->temps[temp].fixed_reg);
+#else
temp_sync(s, temp, allocated_regs);
temp_dead(s, temp);
+#endif
}
/* save globals to their canonical location and assume they can be
@@ -1629,7 +1635,13 @@ static void tcg_reg_alloc_bb_end(TCGContext *s,
TCGRegSet allocated_regs)
if (ts->temp_local) {
temp_save(s, i, allocated_regs);
} else {
+#ifdef USE_LIVENESS_ANALYSIS
+ /* The liveness analysis already ensures that temps are dead.
+ Keep an assert for safety. */
+ assert(ts->val_type == TEMP_VAL_DEAD);
+#else
temp_dead(s, i);
+#endif
}
}
--
1.7.10.4
- Re: [Qemu-devel] [PATCH v2 14/26] tcg: rework TCG helper flags, (continued)
- [Qemu-devel] [PATCH v2 08/26] tcg: always mark dead input arguments as dead, Aurelien Jarno, 2012/10/09
- [Qemu-devel] [PATCH v2 26/26] tcg: remove compatiblity call flags, Aurelien Jarno, 2012/10/09
- [Qemu-devel] [PATCH v2 07/26] tcg: rewrite tcg_reg_alloc_mov(), Aurelien Jarno, 2012/10/09
- [Qemu-devel] [PATCH v2 11/26] tcg: fix some op flags, Aurelien Jarno, 2012/10/09
- [Qemu-devel] [PATCH v2 24/26] target-sparc: rename helper flags, Aurelien Jarno, 2012/10/09
- [Qemu-devel] [PATCH v2 25/26] target-xtensa: rename helper flags, Aurelien Jarno, 2012/10/09
- [Qemu-devel] [PATCH v2 10/26] tcg: don't explicitly save globals and temps,
Aurelien Jarno <=
- [Qemu-devel] [PATCH v2 22/26] target-s390x: rename helper flags, Aurelien Jarno, 2012/10/09
- [Qemu-devel] [PATCH v2 21/26] target-ppc: rename helper flags, Aurelien Jarno, 2012/10/09
- [Qemu-devel] [PATCH v2 17/26] target-cris: rename helper flags, Aurelien Jarno, 2012/10/09
- [Qemu-devel] [PATCH v2 20/26] target-mips: rename helper flags, Aurelien Jarno, 2012/10/09
- [Qemu-devel] [PATCH v2 18/26] target-i386: rename helper flags, Aurelien Jarno, 2012/10/09