Don't spill unused zeros early; we might decide to use them later.
Fixes #91796.
Co-authored-by: Andy Ayers <andya@microsoft.com>
op2 = impSIMDPopStack();
op1 = impSIMDPopStack();
- if (unusedVal1)
+ // Consume operands we won't use, in case they have side effects.
+ //
+ if (unusedVal1 && !(*val1)->IsVectorZero())
{
impAppendTree(gtUnusedValNode(*val1), CHECK_SPILL_ALL, impCurStmtDI);
}
- if (unusedVal2)
+ if (unusedVal2 && !(*val2)->IsVectorZero())
{
impAppendTree(gtUnusedValNode(*val2), CHECK_SPILL_ALL, impCurStmtDI);
}
- if (unusedVal3)
+ if (unusedVal3 && !(*val3)->IsVectorZero())
{
impAppendTree(gtUnusedValNode(*val3), CHECK_SPILL_ALL, impCurStmtDI);
}