@@ -864,7 +864,6 @@ GenTreeCall::Use* Compiler::impPopCallArgs(unsigned count, CORINFO_SIG_INFO* sig
864864{
865865 assert(sig == nullptr || count == sig->numArgs);
866866
867- CORINFO_CLASS_HANDLE structType;
868867 GenTreeCall::Use* argList;
869868
870869 if (Target::g_tgtArgOrder == Target::ARG_ORDER_R2L)
@@ -882,41 +881,41 @@ GenTreeCall::Use* Compiler::impPopCallArgs(unsigned count, CORINFO_SIG_INFO* sig
882881 typeInfo ti = se.seTypeInfo;
883882 GenTree* temp = se.val;
884883
885- if (varTypeIsStruct(temp))
886- {
887- // Morph trees that aren't already OBJs or MKREFANY to be OBJs
888- assert(ti.IsType(TI_STRUCT));
889- structType = ti.GetClassHandleForValueClass();
890-
891- bool forceNormalization = false;
892- if (varTypeIsSIMD(temp))
893- {
894- // We need to ensure that fgMorphArgs will use the correct struct handle to ensure proper
895- // ABI handling of this argument.
896- // Note that this can happen, for example, if we have a SIMD intrinsic that returns a SIMD type
897- // with a different baseType than we've seen.
898- // TODO-Cleanup: Consider whether we can eliminate all of these cases.
899- if (gtGetStructHandleIfPresent(temp) != structType)
900- {
901- forceNormalization = true;
902- }
903- }
904- #ifdef DEBUG
905- if (verbose)
906- {
907- printf("Calling impNormStructVal on:\n");
908- gtDispTree(temp);
909- }
910- #endif
911- temp = impNormStructVal(temp, structType, (unsigned)CHECK_SPILL_ALL, forceNormalization);
912- #ifdef DEBUG
913- if (verbose)
914- {
915- printf("resulting tree:\n");
916- gtDispTree(temp);
917- }
918- #endif
919- }
884+ // if (varTypeIsStruct(temp))
885+ // {
886+ // // Morph trees that aren't already OBJs or MKREFANY to be OBJs
887+ // assert(ti.IsType(TI_STRUCT));
888+ // CORINFO_CLASS_HANDLE structType = ti.GetClassHandleForValueClass();
889+ //
890+ // bool forceNormalization = false;
891+ // if (varTypeIsSIMD(temp))
892+ // {
893+ // // We need to ensure that fgMorphArgs will use the correct struct handle to ensure proper
894+ // // ABI handling of this argument.
895+ // // Note that this can happen, for example, if we have a SIMD intrinsic that returns a SIMD type
896+ // // with a different baseType than we've seen.
897+ // // TODO-Cleanup: Consider whether we can eliminate all of these cases.
898+ // if (gtGetStructHandleIfPresent(temp) != structType)
899+ // {
900+ // forceNormalization = true;
901+ // }
902+ // }
903+ // #ifdef DEBUG
904+ // if (verbose)
905+ // {
906+ // printf("Calling impNormStructVal on:\n");
907+ // gtDispTree(temp);
908+ // }
909+ // #endif
910+ // temp = impNormStructVal(temp, structType, (unsigned)CHECK_SPILL_ALL, forceNormalization);
911+ // #ifdef DEBUG
912+ // if (verbose)
913+ // {
914+ // printf("resulting tree:\n");
915+ // gtDispTree(temp);
916+ // }
917+ // #endif
918+ // }
920919
921920 /* NOTE: we defer bashing the type for I_IMPL to fgMorphArgs */
922921 argList = gtPrependNewCallArg(temp, argList);
@@ -15589,7 +15588,7 @@ void Compiler::impImportBlockCode(BasicBlock* block)
1558915588 goto EVAL_APPEND;
1559015589
1559115590 case CEE_INITOBJ:
15592-
15591+ {
1559315592 assertImp(sz == sizeof(unsigned));
1559415593
1559515594 _impResolveToken(CORINFO_TOKENKIND_Class);
@@ -15598,22 +15597,23 @@ void Compiler::impImportBlockCode(BasicBlock* block)
1559815597
1559915598 if (tiVerificationNeeded)
1560015599 {
15601- typeInfo tiTo = impStackTop().seTypeInfo;
15600+ typeInfo tiTo = impStackTop().seTypeInfo;
1560215601 typeInfo tiInstr = verMakeTypeInfo(resolvedToken.hClass);
1560315602
1560415603 Verify(tiTo.IsByRef(), "byref expected");
1560515604 Verify(!tiTo.IsReadonlyByRef(), "write to readonly byref");
1560615605
1560715606 Verify(tiCompatibleWith(tiInstr, tiTo.DereferenceByRef(), false),
15608- "type operand incompatible with type of address");
15607+ "type operand incompatible with type of address");
1560915608 }
1561015609
1561115610 size = info.compCompHnd->getClassSize(resolvedToken.hClass); // Size
15612- op2 = gtNewIconNode(0); // Value
15613- op1 = impPopStack().val; // Dest
15614- op1 = gtNewBlockVal(op1 , size);
15615- op1 = gtNewBlkOpNode(op1 , op2, (prefixFlags & PREFIX_VOLATILE) != 0, false);
15611+ op2 = gtNewIconNode(0); // Value
15612+ GenTree* dstAddr = impPopStack().val; // Dest
15613+ GenTree* blockVal = gtNewBlockVal(dstAddr , size);
15614+ op1 = gtNewBlkOpNode(blockVal , op2, (prefixFlags & PREFIX_VOLATILE) != 0, /* is copy */ false);
1561615615 goto SPILL_APPEND;
15616+ }
1561715617
1561815618 case CEE_INITBLK:
1561915619
0 commit comments