+2010-06-08 Zoltan Varga <vargaz@gmail.com>
+
+ * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
+ Fixes #612206.
+
+ * exceptions.cs: Add a test.
+
2010-06-06 Zoltan Varga <vargaz@gmail.com>
* mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
MonoMethodVar *vi = MONO_VARINFO (cfg, idx);
cfg->varinfo [vi->idx]->flags |= MONO_INST_VOLATILE;
+ if (SIZEOF_REGISTER == 4 && (var->type == STACK_I8 || (var->type == STACK_R8 && COMPILE_SOFT_FLOAT (cfg)))) {
+ /* Make the component vregs volatile as well (#612206) */
+ get_vreg_to_inst (cfg, var->dreg + 1)->flags |= MONO_INST_VOLATILE;
+ get_vreg_to_inst (cfg, var->dreg + 2)->flags |= MONO_INST_VOLATILE;
+ }
}
/* SREGS */
MonoMethodVar *vi = MONO_VARINFO (cfg, idx);
cfg->varinfo [vi->idx]->flags |= MONO_INST_VOLATILE;
+ if (SIZEOF_REGISTER == 4 && (var->type == STACK_I8 || (var->type == STACK_R8 && COMPILE_SOFT_FLOAT (cfg)))) {
+ /* Make the component vregs volatile as well (#612206) */
+ get_vreg_to_inst (cfg, var->dreg + 1)->flags |= MONO_INST_VOLATILE;
+ get_vreg_to_inst (cfg, var->dreg + 2)->flags |= MONO_INST_VOLATILE;
+ }
}
}
}