sim-card
/
qemu
Archived
10
0
Fork 0

TCG: improve optimizer debugging

Use enum TCGOpcode instead of plain old int so that the name of
current op can be seen in GDB. Add a default case to switch
so that GCC does not complain about unhandled enum cases.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
Blue Swirl 2011-07-30 19:18:32 +00:00
parent e5b34f3779
commit fe0de7aa5e
1 changed files with 9 additions and 6 deletions

View File

@ -87,13 +87,13 @@ static void reset_temp(TCGArg temp, int nb_temps, int nb_globals)
} }
} }
static int op_bits(enum TCGOpcode op) static int op_bits(TCGOpcode op)
{ {
const TCGOpDef *def = &tcg_op_defs[op]; const TCGOpDef *def = &tcg_op_defs[op];
return def->flags & TCG_OPF_64BIT ? 64 : 32; return def->flags & TCG_OPF_64BIT ? 64 : 32;
} }
static int op_to_movi(int op) static TCGOpcode op_to_movi(TCGOpcode op)
{ {
switch (op_bits(op)) { switch (op_bits(op)) {
case 32: case 32:
@ -143,7 +143,7 @@ static void tcg_opt_gen_movi(TCGArg *gen_args, TCGArg dst, TCGArg val,
gen_args[1] = val; gen_args[1] = val;
} }
static int op_to_mov(int op) static TCGOpcode op_to_mov(TCGOpcode op)
{ {
switch (op_bits(op)) { switch (op_bits(op)) {
case 32: case 32:
@ -157,7 +157,7 @@ static int op_to_mov(int op)
} }
} }
static TCGArg do_constant_folding_2(int op, TCGArg x, TCGArg y) static TCGArg do_constant_folding_2(TCGOpcode op, TCGArg x, TCGArg y)
{ {
switch (op) { switch (op) {
CASE_OP_32_64(add): CASE_OP_32_64(add):
@ -258,7 +258,7 @@ static TCGArg do_constant_folding_2(int op, TCGArg x, TCGArg y)
} }
} }
static TCGArg do_constant_folding(int op, TCGArg x, TCGArg y) static TCGArg do_constant_folding(TCGOpcode op, TCGArg x, TCGArg y)
{ {
TCGArg res = do_constant_folding_2(op, x, y); TCGArg res = do_constant_folding_2(op, x, y);
if (op_bits(op) == 32) { if (op_bits(op) == 32) {
@ -271,7 +271,8 @@ static TCGArg do_constant_folding(int op, TCGArg x, TCGArg y)
static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t *tcg_opc_ptr, static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t *tcg_opc_ptr,
TCGArg *args, TCGOpDef *tcg_op_defs) TCGArg *args, TCGOpDef *tcg_op_defs)
{ {
int i, nb_ops, op_index, op, nb_temps, nb_globals, nb_call_args; int i, nb_ops, op_index, nb_temps, nb_globals, nb_call_args;
TCGOpcode op;
const TCGOpDef *def; const TCGOpDef *def;
TCGArg *gen_args; TCGArg *gen_args;
TCGArg tmp; TCGArg tmp;
@ -377,6 +378,8 @@ static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t *tcg_opc_ptr,
continue; continue;
} }
break; break;
default:
break;
} }
/* Propagate constants through copy operations and do constant /* Propagate constants through copy operations and do constant