@@ -2786,12 +2786,18 @@ GlobOpt::IsNonNumericRegOpnd(IR::RegOpnd* opnd, bool inGlobOpt, bool* isSafeToTr
2786
2786
{
2787
2787
return true;
2788
2788
}
2789
+
2790
+ bool isSafeToTransfer = this->IsSafeToTransferInPrepass(opnd->m_sym, opndValueInfo);
2791
+ if (isSafeToTransferInPrepass != nullptr)
2792
+ {
2793
+ *isSafeToTransferInPrepass = isSafeToTransfer;
2794
+ }
2789
2795
if (this->prePassLoop->preservesNumberValue->Test(opnd->m_sym->m_id))
2790
2796
{
2791
2797
return false;
2792
2798
}
2793
2799
2794
- return !this->IsSafeToTransferInPrepass(opnd->m_sym, opndValueInfo) ;
2800
+ return !isSafeToTransfer ;
2795
2801
}
2796
2802
2797
2803
return true;
@@ -17393,11 +17399,27 @@ GlobOpt::EmitMemop(Loop * loop, LoopCount *loopCount, const MemOpEmitData* emitD
17393
17399
}
17394
17400
#endif
17395
17401
17402
+ Assert(noImplicitCallUsesToInsert->Count() == 0);
17403
+ bool isLikelyJsArray;
17404
+ if (emitData->stElemInstr->GetDst()->IsIndirOpnd())
17405
+ {
17406
+ baseOpnd = emitData->stElemInstr->GetDst()->AsIndirOpnd()->GetBaseOpnd();
17407
+ isLikelyJsArray = baseOpnd->GetValueType().IsLikelyArrayOrObjectWithArray();
17408
+ ProcessNoImplicitCallArrayUses(baseOpnd, baseOpnd->IsArrayRegOpnd() ? baseOpnd->AsArrayRegOpnd() : nullptr, emitData->stElemInstr, isLikelyJsArray, true);
17409
+ }
17396
17410
RemoveMemOpSrcInstr(memopInstr, emitData->stElemInstr, emitData->block);
17397
17411
if (!isMemset)
17398
17412
{
17413
+ if (((MemCopyEmitData*)emitData)->ldElemInstr->GetSrc1()->IsIndirOpnd())
17414
+ {
17415
+ baseOpnd = ((MemCopyEmitData*)emitData)->ldElemInstr->GetSrc1()->AsIndirOpnd()->GetBaseOpnd();
17416
+ isLikelyJsArray = baseOpnd->GetValueType().IsLikelyArrayOrObjectWithArray();
17417
+ ProcessNoImplicitCallArrayUses(baseOpnd, baseOpnd->IsArrayRegOpnd() ? baseOpnd->AsArrayRegOpnd() : nullptr, emitData->stElemInstr, isLikelyJsArray, true);
17418
+ }
17399
17419
RemoveMemOpSrcInstr(memopInstr, ((MemCopyEmitData*)emitData)->ldElemInstr, emitData->block);
17400
17420
}
17421
+ InsertNoImplicitCallUses(memopInstr);
17422
+ noImplicitCallUsesToInsert->Clear();
17401
17423
}
17402
17424
17403
17425
bool
0 commit comments