diff --git a/src/mono/mono/mini/intrinsics.c b/src/mono/mono/mini/intrinsics.c index b1e5e767231470..ef77b7dc89f2ee 100644 --- a/src/mono/mono/mini/intrinsics.c +++ b/src/mono/mono/mini/intrinsics.c @@ -2079,7 +2079,9 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign MonoType *t = method_context->method_inst->type_argv [0]; MonoClass *arg0 = mono_class_from_mono_type_internal (t); if (m_class_is_valuetype (arg0) && !mono_class_has_default_constructor (arg0, FALSE)) { - if (m_class_is_primitive (arg0)) { + if (m_class_is_primitive (arg0) || m_class_is_enumtype (arg0)) { + if (m_class_is_enumtype (arg0)) + t = mono_class_enum_basetype_internal (arg0); int dreg = alloc_dreg (cfg, mini_type_to_stack_type (cfg, t)); mini_emit_init_rvar (cfg, dreg, t); ins = cfg->cbb->last_ins;