JIT: consistently handle no return calls in qmarks#94690
JIT: consistently handle no return calls in qmarks#94690AndyAyersMS merged 1 commit intodotnet:mainfrom
Conversation
When we expand QMARKS, ensure that any block with a no-return call gets changed to BBJ_THROW. This fixes a case I am seeing with cross-block local assertion prop, as the upper QMARK gets optimized away and so we don't check if the expansing has any noreturn calls. It also happens in places with just within-block local assertion prop. Contributes to dotnet#94363.
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsWhen we expand QMARKS, ensure that any block with a no-return call gets changed to BBJ_THROW. This fixes a case I am seeing with cross-block local assertion prop, as the upper QMARK gets optimized away and so we don't check if the expansing has any noreturn calls. It also happens in places with just within-block local assertion prop. Contributes to #94363.
|
|
@dotnet/jit-contrib fyi A handful of diffs expected (a few more with cross-block enabled, but still not a lot). Ideally we'd tail merge these, but the noreturn calls often end up with different arguments, and tail merge / throw helper merge aren't able to handle these cases (yet). |
jakobbotsch
left a comment
There was a problem hiding this comment.
LGTM. Is the fgExpandQmarkForCastInstOf special case still necessary?
You mean the part that is described by I don't see how it can be reached, as the outer qmark is the one that would have the Let me see if we get there with SPMI. |
|
I mean the entirety of |
|
Ah... I can look at this. Maybe as part of revisiting #86778. |
|
Will revisit some of the above when I look at moving qmark expansion earlier. |
When we expand QMARKS, ensure that any block with a no-return call gets changed to BBJ_THROW.
This fixes a case I am seeing with cross-block local assertion prop, as the upper QMARK gets optimized away and so we don't check if the expansing has any noreturn calls.
It also happens in places with just within-block local assertion prop.
Contributes to #94363.