File tree Expand file tree Collapse file tree 2 files changed +8
-15
lines changed Expand file tree Collapse file tree 2 files changed +8
-15
lines changed Original file line number Diff line number Diff line change @@ -3889,8 +3889,14 @@ GenTree* Compiler::impIntrinsic(GenTree* newobjThis,
38893889 GenTree* lclVar = gtNewLclvNode(rawHandleSlot, TYP_I_IMPL);
38903890 GenTree* lclVarAddr = gtNewOperNode(GT_ADDR, TYP_I_IMPL, lclVar);
38913891 var_types resultType = JITtype2varType(sig->retType);
3892- retNode = gtNewOperNode(GT_IND, resultType, lclVarAddr);
3893-
3892+ if (resultType == TYP_STRUCT)
3893+ {
3894+ retNode = gtNewObjNode(sig->retTypeClass, lclVarAddr);
3895+ }
3896+ else
3897+ {
3898+ retNode = gtNewIndir(resultType, lclVarAddr);
3899+ }
38943900 break;
38953901 }
38963902
Original file line number Diff line number Diff line change @@ -1015,19 +1015,6 @@ class LocalAddressVisitor final : public GenTreeVisitor<LocalAddressVisitor>
10151015 return IndirTransform::None;
10161016 }
10171017
1018- if (indir->OperIs (GT_IND)) // IND<struct>
1019- {
1020- // TODO-ADDR: add this case to the "don't expect" assert above; it requires updating
1021- // "cpblk" import to not create such nodes for block copies of known size.
1022- return IndirTransform::None;
1023- }
1024-
1025- if (!user->OperIs (GT_ASG, GT_CALL, GT_RETURN))
1026- {
1027- // TODO-ADDR: define the contract for "COMMA(..., LCL<struct>)".
1028- return IndirTransform::None;
1029- }
1030-
10311018 ClassLayout* indirLayout = nullptr ;
10321019
10331020 if (indir->OperIs (GT_FIELD))
You can’t perform that action at this time.
0 commit comments