X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fssa.c;h=d58d814e11fb0685d48c275cc497a968b8ab034a;hb=32455dbbe90d3f7826a2bae5a95360e050f04172;hp=c4685b81aa70024b83a49301d405dd2ee9aab2cd;hpb=25f97426c73a6f5ba3c15ead86951e106a1ecbcd;p=mono.git diff --git a/mono/mini/ssa.c b/mono/mini/ssa.c index c4685b81aa7..d58d814e11f 100644 --- a/mono/mini/ssa.c +++ b/mono/mini/ssa.c @@ -5,6 +5,7 @@ * Dietmar Maurer (dietmar@ximian.com) * * (C) 2003 Ximian, Inc. + * Copyright 2011 Xamarin, Inc (http://www.xamarin.com) */ #include #include @@ -268,7 +269,7 @@ mono_ssa_rename_vars (MonoCompile *cfg, int max_vars, MonoBasicBlock *bb, gboole } else if (G_UNLIKELY (!var && lvreg_defined [ins->dreg] && (ins->dreg >= MONO_MAX_IREGS))) { /* Perform renaming for local vregs */ - lvreg_stack [ins->dreg] = mono_alloc_preg (cfg); + lvreg_stack [ins->dreg] = vreg_is_ref (cfg, ins->dreg) ? mono_alloc_ireg_ref (cfg) : mono_alloc_preg (cfg); ins->dreg = lvreg_stack [ins->dreg]; } else @@ -683,7 +684,6 @@ mono_ssa_copyprop (MonoCompile *cfg) /* Rewrite all uses of var to be uses of var2 */ int dreg = var->dreg; int sreg1 = var2->dreg; - const char *spec; l = info->uses; while (l) { @@ -693,8 +693,6 @@ mono_ssa_copyprop (MonoCompile *cfg) int num_sregs; int sregs [MONO_MAX_SRC_REGS]; - spec = INS_INFO (ins->opcode); - num_sregs = mono_inst_get_src_registers (ins, sregs); for (i = 0; i < num_sregs; ++i) { if (sregs [i] == dreg) @@ -1107,7 +1105,7 @@ fold_ins (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, MonoInst **carray /* Unlink target bblocks */ for (i = 0; i < table->table_size; ++i) { - if (i != idx) { + if (table->table [i] != table->table [idx]) { remove_bb_from_phis (cfg, bb, table->table [i]); mono_unlink_bblock (cfg, bb, table->table [i]); }