2008-07-02 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / liveness.c
index df4c6b07a9bd06242995be7890c57927902c833b..aa73644bc37dc5a1281347a3cedef02ce6a8cf8c 100644 (file)
@@ -476,8 +476,11 @@ mono_analyze_liveness (MonoCompile *cfg)
 
        for (i = 0; i < max_vars; i ++) {
                MonoMethodVar *vi = MONO_VARINFO (cfg, i);
-               if (cfg->varinfo [vi->idx]->opcode == OP_ARG)
+               if (cfg->varinfo [vi->idx]->opcode == OP_ARG) {
+                       if (vi->range.last_use.abs_pos == 0 && !(cfg->varinfo [vi->idx]->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT)))
+                               cfg->varinfo [vi->idx]->flags |= MONO_INST_IS_DEAD;
                        vi->range.first_use.abs_pos = 0;
+               }
        }
 
 #ifdef DEBUG_LIVENESS
@@ -491,7 +494,8 @@ mono_analyze_liveness (MonoCompile *cfg)
        }
 #endif
 
-       optimize_initlocals (cfg);
+       if (!cfg->disable_initlocals_opt)
+               optimize_initlocals (cfg);
 }
 
 static void