[llvm] Fix the allocation of vregs for the OP_MIN/MAX opcodes. Fixes #41947.
authorZoltan Varga <vargaz@gmail.com>
Fri, 17 Jun 2016 21:26:47 +0000 (17:26 -0400)
committerZoltan Varga <vargaz@gmail.com>
Fri, 17 Jun 2016 21:26:47 +0000 (17:26 -0400)
mono/mini/method-to-ir.c

index 7df45ee2556f8ea504cc06ddbe7435fbaa49df3e..3476585c10751c5d1e3f42fda8cb3990e1f7af3c 100644 (file)
@@ -5886,7 +5886,7 @@ llvm_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                if (opcode && fsig->param_count == 1) {
                        MONO_INST_NEW (cfg, ins, opcode);
                        ins->type = STACK_R8;
-                       ins->dreg = mono_alloc_freg (cfg);
+                       ins->dreg = mono_alloc_dreg (cfg, ins->type);
                        ins->sreg1 = args [0]->dreg;
                        MONO_ADD_INS (cfg->cbb, ins);
                }
@@ -5917,7 +5917,7 @@ llvm_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                if (opcode && fsig->param_count == 2) {
                        MONO_INST_NEW (cfg, ins, opcode);
                        ins->type = fsig->params [0]->type == MONO_TYPE_I4 ? STACK_I4 : STACK_I8;
-                       ins->dreg = mono_alloc_ireg (cfg);
+                       ins->dreg = mono_alloc_dreg (cfg, ins->type);
                        ins->sreg1 = args [0]->dreg;
                        ins->sreg2 = args [1]->dreg;
                        MONO_ADD_INS (cfg->cbb, ins);