Skip to content

Commit

Permalink
tcg: Require liveness analysis
Browse files Browse the repository at this point in the history
Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
  • Loading branch information
rth7680 committed Aug 5, 2016
1 parent bdfb460 commit c0ef05b
Showing 1 changed file with 0 additions and 21 deletions.
21 changes: 0 additions & 21 deletions tcg/tcg.c
Expand Up @@ -23,7 +23,6 @@
*/

/* define it to use liveness analysis (better code) */
#define USE_LIVENESS_ANALYSIS
#define USE_TCG_OPTIMIZATIONS

#include "qemu/osdep.h"
Expand Down Expand Up @@ -1337,8 +1336,6 @@ void tcg_op_remove(TCGContext *s, TCGOp *op)
#endif
}

#ifdef USE_LIVENESS_ANALYSIS

#define TS_DEAD 1
#define TS_MEM 2

Expand Down Expand Up @@ -1595,18 +1592,6 @@ static void tcg_liveness_analysis(TCGContext *s)
op->life = arg_life;
}
}
#else
/* dummy liveness analysis */
static void tcg_liveness_analysis(TCGContext *s)
{
int nb_ops = s->gen_next_op_idx;

s->op_dead_args = tcg_malloc(nb_ops * sizeof(uint16_t));
memset(s->op_dead_args, 0, nb_ops * sizeof(uint16_t));
s->op_sync_args = tcg_malloc(nb_ops * sizeof(uint8_t));
memset(s->op_sync_args, 0, nb_ops * sizeof(uint8_t));
}
#endif

#ifdef CONFIG_DEBUG_TCG
static void dump_regs(TCGContext *s)
Expand Down Expand Up @@ -1858,15 +1843,13 @@ static void temp_load(TCGContext *s, TCGTemp *ts, TCGRegSet desired_regs,
temporary registers needs to be allocated to store a constant. */
static void temp_save(TCGContext *s, TCGTemp *ts, TCGRegSet allocated_regs)
{
#ifdef USE_LIVENESS_ANALYSIS
/* ??? Liveness does not yet incorporate indirect bases. */
if (!ts->indirect_base) {
/* The liveness analysis already ensures that globals are back
in memory. Keep an tcg_debug_assert for safety. */
tcg_debug_assert(ts->val_type == TEMP_VAL_MEM || ts->fixed_reg);
return;
}
#endif
temp_sync(s, ts, allocated_regs, 1);
}

Expand All @@ -1891,15 +1874,13 @@ static void sync_globals(TCGContext *s, TCGRegSet allocated_regs)

for (i = 0; i < s->nb_globals; i++) {
TCGTemp *ts = &s->temps[i];
#ifdef USE_LIVENESS_ANALYSIS
/* ??? Liveness does not yet incorporate indirect bases. */
if (!ts->indirect_base) {
tcg_debug_assert(ts->val_type != TEMP_VAL_REG
|| ts->fixed_reg
|| ts->mem_coherent);
continue;
}
#endif
temp_sync(s, ts, allocated_regs, 0);
}
}
Expand All @@ -1915,15 +1896,13 @@ static void tcg_reg_alloc_bb_end(TCGContext *s, TCGRegSet allocated_regs)
if (ts->temp_local) {
temp_save(s, ts, allocated_regs);
} else {
#ifdef USE_LIVENESS_ANALYSIS
/* ??? Liveness does not yet incorporate indirect bases. */
if (!ts->indirect_base) {
/* The liveness analysis already ensures that temps are dead.
Keep an tcg_debug_assert for safety. */
tcg_debug_assert(ts->val_type == TEMP_VAL_DEAD);
continue;
}
#endif
temp_dead(s, ts);
}
}
Expand Down

0 comments on commit c0ef05b

Please sign in to comment.