unsigned char lvFldOffset;
unsigned char lvFldOrdinal;
+#ifdef DEBUG
+ unsigned char lvDisqualifyEHVarReason = 'H';
+#endif
+
#if FEATURE_MULTIREG_ARGS
regNumber lvRegNumForSlot(unsigned slotNum)
{
if (varDsc->lvEhWriteThruCandidate || needsExplicitZeroInit)
{
+#ifdef DEBUG
+ if (needsExplicitZeroInit)
+ {
+ varDsc->lvDisqualifyEHVarReason = 'Z';
+ JITDUMP("EH Var V%02u needs explicit zero init. Disqualified as a register candidate.\n",
+ lclNum);
+ }
+ else
+ {
+ varDsc->lvDisqualifyEHVarReason = 'M';
+ JITDUMP("EH Var V%02u has multiple definitions. Disqualified as a register candidate.\n",
+ lclNum);
+ }
+
+#endif // DEBUG
varDsc->lvEhWriteThruCandidate = false;
varDsc->lvDisqualifyForEhWriteThru = true;
}
#endif
{
varDsc->lvEhWriteThruCandidate = true;
+ JITDUMP("Marking EH Var V%02u as a register candidate.\n", lclNum);
}
}
}
}
if (lvaEnregEHVars && varDsc->lvLiveInOutOfHndlr)
{
- printf("H");
+ printf("%c", varDsc->lvDisqualifyEHVarReason);
}
if (varDsc->lvLclFieldExpr)
{