40 #define printf(...) do { if (getenv("VERB")) printf(__VA_ARGS__); } while (0)
41 #define show_method(...) do { if (getenv("VERB")) show_method(__VA_ARGS__); } while (0)
142 itdf = n->domfrontier;
143 itdf != n->domfrontier + n->domfrontiercount;
149 printf(
" *** BB %d: phi for var %d\n", Y->
nr, a);
209 assert(0 < index && index <= ssa->vars[var].num_defs);
215 assert(ret < ssa->total_local_count);
220 printf(
" *** rename %c %d vers %d => %d\n",
var_is_local(ssa->
jd, var) ?
'L' :
'O', var, index, ret);
225 while (uses_count > 0) {
270 printf(
" *** === %d ===========\n", bptr->
nr);
275 printf(
" *** --- phis ---------\n");
284 printf(
" *** --- vars ---------\n");
302 s[2] = iptr->
sx.
s23.s3.varindex;
307 s[1] = iptr->
sx.
s23.s2.varindex;
324 uses = iptr->
sx.
s23.s2.args;
331 for (jj = 0; jj < uses_count; ++jj)
printf(
"%d ",uses[jj]);
334 if (uses_count > 0) {
342 switch (uses_count) {
344 iptr->
sx.
s23.s3.varindex = s[2];
346 iptr->
sx.
s23.s2.varindex = s[1];
382 if (*itpred == bptr)
break;
388 itph =
bb_info(Y)->phi_functions;
399 itdsucc = bptr->domsuccessors;
400 itdsucc != bptr->domsuccessors + bptr->domsuccessorcount;
434 printf(
" *** vartop(%d) = ssa->total_local_count(%d) + jd->vartop(%d) - jd->localcount(%d)\n",
442 *(it++) = jd->
var[i];
449 *(it++) = jd->
var[i];
455 for (i = jd->
localcount; i < jd->vartop; ++i) {
456 *(it++) = jd->
var[i];
465 for (j = 0; j < 5; ++j) {
467 if (jd->
var[varindex].
type != j) {
485 if (*itpred == from)
break;
545 if (bptr->
next == NULL)
return;
581 if (! bptr->vp)
continue;
593 l = iptr->
sx.
s23.s2.tablelow;
594 i = iptr->
sx.
s23.s3.tablehigh;
604 i = iptr->
sx.
s23.s2.lookupcount;
620 if (! bptr->
next)
continue;
630 printf(
"=============== [ before %s ] =========================\n", jd->
m->
name.
begin());
632 printf(
"=============== [ /before ] =========================\n");
641 printf(
"=============== [ after ] =========================\n");
643 printf(
"=============== [ /after ] =========================\n");
set * set_new(unsigned capacity)
static void ssa_rename_block(ssa_info *ssa, basicblock *bptr)
static void ssa_rename_definition(ssa_info *ssa, s4 *pdef)
static bool instruction_has_dst(const instruction *iptr)
struct phi_function phi_function
#define DMREALLOC(ptr, type, num1, num2)
bool set_empty(const set *s)
static s4 ssa_rename_var(ssa_info *ssa, s4 var, unsigned index)
void set_insert(set *s, void *element)
static basicblock_info * bb_info(basicblock *bb)
bool bv_get_bit(bitvector bv, int bit)
phi_function * phi_functions
static void ssa_create_phi_functions(ssa_info *ssa)
#define MZERO(ptr, type, num)
static bool var_is_local(const jitdata *jd, s4 i)
static void ssa_rename(ssa_info *ssa)
static void ssa_rename_uses(ssa_info *ssa, s4 *uses, unsigned uses_count)
Instruction::InstID tmp[]
basicblock ** predecessors
void ssa_init(jitdata *jd)
static void ssa_create_phi_moves(ssa_info *ssa)
static basicblock * create_block(ssa_info *ssa, basicblock *from, basicblock *to)
union instruction::@12 sx
static unsigned get_predecessor_index(basicblock *from, basicblock *to)
icmdtable_entry_t icmd_table[256]
byte_iterator begin() const
static void ssa_calculate_offsets(ssa_info *ssa)
struct instruction::@12::@13 s23
static void crate_fallthrough(ssa_info *ssa, basicblock *bptr)
static void ssa_export(ssa_info *ssa)
bitvector bv_new(int size)
void bv_set_bit(bitvector bv, int bit)
struct basicblock_info basicblock_info
unsigned total_local_count
static void ssa_place_phi_functions(ssa_info *ssa)