}
// Call, phi, and SIMD nodes are handled by MoveNext{Call,Phi,SIMD}UseEdge, repsectively.
+ //
+ // If FEATURE_MULTIREG_ARGS is enabled, so PUTARG_STK nodes also have special handling.
case GT_CALL:
case GT_PHI:
#ifdef FEATURE_SIMD
case GT_SIMD:
#endif
+#if FEATURE_MULTIREG_ARGS
+ case GT_PUTARG_STK:
+#endif
+
break;
case GT_INITBLK:
}
}
}
-#endif
+#endif // FEATURE_SIMD
+
+#if FEATURE_MULTIREG_ARGS
+void GenTreeUseEdgeIterator::MoveToNextPutArgStkUseEdge()
+{
+ assert(m_node->OperGet() == GT_PUTARG_STK);
+
+ GenTreeUnOp* putArg = m_node->AsUnOp();
+
+ for (;;)
+ {
+ switch (m_state)
+ {
+ case 0:
+ if ((putArg->gtOp1->OperGet() != GT_LIST) || !m_expandMultiRegArgs)
+ {
+ m_state = 2;
+ m_edge = &putArg->gtOp1;
+ return;
+ }
+
+ m_state = 1;
+ m_argList = putArg->gtOp1;
+ break;
+
+ case 1:
+ if (m_argList == nullptr)
+ {
+ m_state = 2;
+ }
+ else
+ {
+ GenTreeArgList* argNode = m_argList->AsArgList();
+ m_edge = &argNode->gtOp1;
+ m_argList = argNode->Rest();
+ return;
+ }
+ break;
+
+ default:
+ m_node = nullptr;
+ m_edge = nullptr;
+ m_argList = nullptr;
+ m_state = -1;
+ return;
+ }
+ }
+}
+#endif // FEATURE_MULTIREG_ARGS
//------------------------------------------------------------------------
// GenTreeUseEdgeIterator::operator++:
MoveToNextSIMDUseEdge();
}
#endif
+#if FEATURE_MULTIREG_ARGS
+ else if (op == GT_PUTARG_STK)
+ {
+ MoveToNextPutArgStkUseEdge();
+ }
+#endif
else
{
m_edge = GetNextUseEdge();
WorkingDir=JIT\Performance\CodeQuality\Roslyn\CscBench
Expected=0
MaxAllowedDurationSeconds=600
-Categories=Pri0;EXPECTED_FAIL;ISSUE_6583;LONG_RUNNING
+Categories=Pri0;EXPECTED_FAIL;ISSUE_6893;LONG_RUNNING
HostStyle=0
[SciMark.cmd_8027]
RelativePath=JIT\Performance\CodeQuality\SciMark\SciMark\SciMark.cmd
WorkingDir=managed\Compilation\Compilation
Expected=0
MaxAllowedDurationSeconds=800
-Categories=Pri0;RT;EXPECTED_FAIL;ISSUE_6583;NATIVE_INTEROP;LONG_RUNNING
+Categories=Pri0;RT;EXPECTED_FAIL;ISSUE_6893;NATIVE_INTEROP;LONG_RUNNING
HostStyle=0
[generics.cmd_9787]
RelativePath=readytorun\generics\generics.cmd