X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fssa.c;h=46cbc934ff6308f7c095d704ffd8621e42732bb6;hb=dba1e96418a00b863db3565d5997314105bd8aa3;hp=c8718a74107be5ae0c3851646ab542a129414ebc;hpb=f84f760a1c8a8c0ec6ae16b7f38d14a49d329ad7;p=mono.git diff --git a/mono/mini/ssa.c b/mono/mini/ssa.c index c8718a74107..46cbc934ff6 100644 --- a/mono/mini/ssa.c +++ b/mono/mini/ssa.c @@ -195,7 +195,7 @@ mono_ssa_rename_vars (MonoCompile *cfg, int max_vars, MonoBasicBlock *bb, MonoIn { MonoInst *inst, *new_var; int i, j, idx; - GList *tmp; + GSList *tmp; MonoInst **new_stack; #ifdef DEBUG_SSA @@ -448,7 +448,7 @@ mono_ssa_replace_copies (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *inst, c if (inst->ssa_op == MONO_SSA_STORE && inst->inst_i1->ssa_op == MONO_SSA_LOAD && inst->inst_i0->inst_c0 == inst->inst_i1->inst_i0->inst_c0) { inst->ssa_op = MONO_SSA_NOP; - inst->opcode = CEE_NOP; + inst->opcode = OP_NOP; } } @@ -493,7 +493,7 @@ mono_ssa_remove (MonoCompile *cfg) } /* remove the phi functions */ - inst->opcode = CEE_NOP; + inst->opcode = OP_NOP; inst->ssa_op = MONO_SSA_NOP; } } @@ -696,7 +696,7 @@ mono_ssa_avoid_copies (MonoCompile *cfg) //mono_print_tree (u); printf ("\n"); - inst->opcode = CEE_NOP; + inst->opcode = OP_NOP; inst->ssa_op = MONO_SSA_NOP; } } @@ -711,7 +711,7 @@ mono_ssa_avoid_copies (MonoCompile *cfg) i2->def = inst; i1->def = NULL; i1->uses = NULL; - next->opcode = CEE_NOP; + next->opcode = OP_NOP; next->ssa_op = MONO_SSA_NOP; } } @@ -933,14 +933,14 @@ fold_tree (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *inst, MonoInst **carr if (target) { bb->out_bb [0] = target; bb->out_count = 1; - inst->opcode = CEE_BR; + inst->opcode = OP_BR; inst->inst_target_bb = target; } } else if (inst->opcode == CEE_SWITCH && (evaluate_const_tree (cfg, inst->inst_left, &a, carray) == 1) && (a >= 0) && (a < GPOINTER_TO_INT (inst->klass))) { bb->out_bb [0] = inst->inst_many_bb [a]; bb->out_count = 1; inst->inst_target_bb = bb->out_bb [0]; - inst->opcode = CEE_BR; + inst->opcode = OP_BR; } } @@ -992,6 +992,13 @@ visit_inst (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *inst, GList **cvars, } } } + } else if (inst->opcode == OP_BR) { + MonoBasicBlock *target = inst->inst_target_bb; + + if (!(target->flags & BB_REACHABLE)) { + target->flags |= BB_REACHABLE; + *bblist = g_list_prepend (*bblist, target); + } } else if ((inst->opcode >= CEE_BEQ && inst->opcode <= CEE_BLT_UN) && ((inst->inst_i0->opcode == OP_COMPARE) || (inst->inst_i0->opcode == OP_LCOMPARE))) { int a, b, r1, r2; @@ -1226,7 +1233,7 @@ mono_ssa_deadce (MonoCompile *cfg) } //if (i1->opcode != OP_PHI) printf ("SSA DEADCE DEAD LOCAL\n"); - info->def->opcode = CEE_NOP; + info->def->opcode = OP_NOP; info->def->ssa_op = MONO_SSA_NOP; }