Index: mini/mini.c =================================================================== --- mini/mini.c (revision 123898) +++ mini/mini.c (working copy) @@ -3123,6 +3123,10 @@ /* The debugger needs all locals to be on the stack or in a global register */ cfg->disable_vreg_to_lvreg = TRUE; + /* Don't remove unused variables when running inside the debugger since the user + * may still want to view them. */ + cfg->disable_deadce_vars = TRUE; + // cfg->opt |= MONO_OPT_SHARED; cfg->opt &= ~MONO_OPT_DEADCE; cfg->opt &= ~MONO_OPT_INLINE; Index: mini/mini.h =================================================================== --- mini/mini.h (revision 123898) +++ mini/mini.h (working copy) @@ -854,6 +854,7 @@ guint disable_initlocals_opt : 1; guint disable_omit_fp : 1; guint disable_vreg_to_lvreg : 1; + guint disable_deadce_vars : 1; guint has_got_slots : 1; guint uses_rgctx_reg : 1; guint uses_vtable_reg : 1; Index: mini/ChangeLog =================================================================== --- mini/ChangeLog (revision 123898) +++ mini/ChangeLog (working copy) @@ -1,3 +1,16 @@ +2009-01-21 Martin Baulig + + * mini.h + (MonoCompile): Added `disable_deadce_vars' to disable removing + unused variables. + + * mini.c + (mini_method_compile): Set `cfg->disable_deadce_vars' when running + inside the debugger. + + * liveness.c (mono_analyze_liveness): Don't remove any unused + variables if `cfg->disable_deadce_vars' is set. + 2009-01-20 Rodrigo Kumpera * mini-exceptions.c (mono_print_thread_dump): Add information Index: mini/liveness.c =================================================================== --- mini/liveness.c (revision 123898) +++ mini/liveness.c (working copy) @@ -466,7 +466,7 @@ * VOLATILE, since that would prevent it from being allocated to * registers. */ - if (!(cfg->generic_sharing_context && mono_method_signature (cfg->method)->hasthis && cfg->varinfo [vi->idx] == cfg->args [0])) + if (!cfg->disable_deadce_vars && !(cfg->generic_sharing_context && mono_method_signature (cfg->method)->hasthis && cfg->varinfo [vi->idx] == cfg->args [0])) cfg->varinfo [vi->idx]->flags |= MONO_INST_IS_DEAD; } vi->range.first_use.abs_pos = 0;