tcg: Remove TEMP_NORMAL
TEMP_NORMAL is a subset of TEMP_EBB. Promote single basic block temps to single extended basic block. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
874b857461
commit
0218e04015
|
@ -431,8 +431,6 @@ typedef enum TCGTempVal {
|
|||
} TCGTempVal;
|
||||
|
||||
typedef enum TCGTempKind {
|
||||
/* Temp is dead at the end of all basic blocks. */
|
||||
TEMP_NORMAL,
|
||||
/*
|
||||
* Temp is dead at the end of the extended basic block (EBB),
|
||||
* the single-entry multiple-exit region that falls through
|
||||
|
|
19
tcg/tcg.c
19
tcg/tcg.c
|
@ -1257,7 +1257,7 @@ TCGTemp *tcg_global_mem_new_internal(TCGType type, TCGv_ptr base,
|
|||
TCGTemp *tcg_temp_new_internal(TCGType type, bool temp_local)
|
||||
{
|
||||
TCGContext *s = tcg_ctx;
|
||||
TCGTempKind kind = temp_local ? TEMP_TB : TEMP_NORMAL;
|
||||
TCGTempKind kind = temp_local ? TEMP_TB : TEMP_EBB;
|
||||
TCGTemp *ts;
|
||||
int idx, k;
|
||||
|
||||
|
@ -1367,7 +1367,7 @@ void tcg_temp_free_internal(TCGTemp *ts)
|
|||
* silently ignore free.
|
||||
*/
|
||||
return;
|
||||
case TEMP_NORMAL:
|
||||
case TEMP_EBB:
|
||||
case TEMP_TB:
|
||||
break;
|
||||
default:
|
||||
|
@ -1383,7 +1383,7 @@ void tcg_temp_free_internal(TCGTemp *ts)
|
|||
#endif
|
||||
|
||||
idx = temp_idx(ts);
|
||||
k = ts->base_type + (ts->kind == TEMP_NORMAL ? 0 : TCG_TYPE_COUNT);
|
||||
k = ts->base_type + (ts->kind == TEMP_EBB ? 0 : TCG_TYPE_COUNT);
|
||||
set_bit(idx, s->free_temps[k].l);
|
||||
}
|
||||
|
||||
|
@ -1910,7 +1910,6 @@ static void tcg_reg_alloc_start(TCGContext *s)
|
|||
break;
|
||||
case TEMP_GLOBAL:
|
||||
break;
|
||||
case TEMP_NORMAL:
|
||||
case TEMP_EBB:
|
||||
val = TEMP_VAL_DEAD;
|
||||
/* fall through */
|
||||
|
@ -1940,9 +1939,6 @@ static char *tcg_get_arg_str_ptr(TCGContext *s, char *buf, int buf_size,
|
|||
snprintf(buf, buf_size, "loc%d", idx - s->nb_globals);
|
||||
break;
|
||||
case TEMP_EBB:
|
||||
snprintf(buf, buf_size, "ebb%d", idx - s->nb_globals);
|
||||
break;
|
||||
case TEMP_NORMAL:
|
||||
snprintf(buf, buf_size, "tmp%d", idx - s->nb_globals);
|
||||
break;
|
||||
case TEMP_CONST:
|
||||
|
@ -2762,7 +2758,6 @@ static void la_bb_end(TCGContext *s, int ng, int nt)
|
|||
case TEMP_TB:
|
||||
state = TS_DEAD | TS_MEM;
|
||||
break;
|
||||
case TEMP_NORMAL:
|
||||
case TEMP_EBB:
|
||||
case TEMP_CONST:
|
||||
state = TS_DEAD;
|
||||
|
@ -2811,9 +2806,6 @@ static void la_bb_sync(TCGContext *s, int ng, int nt)
|
|||
continue;
|
||||
}
|
||||
break;
|
||||
case TEMP_NORMAL:
|
||||
s->temps[i].state = TS_DEAD;
|
||||
break;
|
||||
case TEMP_EBB:
|
||||
case TEMP_CONST:
|
||||
continue;
|
||||
|
@ -3571,7 +3563,6 @@ static void temp_free_or_dead(TCGContext *s, TCGTemp *ts, int free_or_dead)
|
|||
case TEMP_TB:
|
||||
new_type = TEMP_VAL_MEM;
|
||||
break;
|
||||
case TEMP_NORMAL:
|
||||
case TEMP_EBB:
|
||||
new_type = free_or_dead < 0 ? TEMP_VAL_MEM : TEMP_VAL_DEAD;
|
||||
break;
|
||||
|
@ -3859,7 +3850,6 @@ static void tcg_reg_alloc_bb_end(TCGContext *s, TCGRegSet allocated_regs)
|
|||
case TEMP_TB:
|
||||
temp_save(s, ts, allocated_regs);
|
||||
break;
|
||||
case TEMP_NORMAL:
|
||||
case TEMP_EBB:
|
||||
/* The liveness analysis already ensures that temps are dead.
|
||||
Keep an tcg_debug_assert for safety. */
|
||||
|
@ -3896,9 +3886,6 @@ static void tcg_reg_alloc_cbranch(TCGContext *s, TCGRegSet allocated_regs)
|
|||
case TEMP_TB:
|
||||
tcg_debug_assert(ts->val_type != TEMP_VAL_REG || ts->mem_coherent);
|
||||
break;
|
||||
case TEMP_NORMAL:
|
||||
tcg_debug_assert(ts->val_type == TEMP_VAL_DEAD);
|
||||
break;
|
||||
case TEMP_EBB:
|
||||
case TEMP_CONST:
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue