JIT: extend relaxed checks through morph - #132816
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Azure Pipelines: Successfully started running 5 pipeline(s). 11 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Azure Pipelines: Successfully started running 5 pipeline(s). 11 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
There was a problem hiding this comment.
Pull request overview
This PR adjusts JIT IR flag validation so “relaxed” flag checking remains enabled through global morph, while adding a few targeted updates to keep side-effect/flag information consistent across transformations (local morph, inlining, object allocation rewrites). It also tweaks DEBUG-only diagnostics to tolerate a temporary inconsistency during implicit-byref retyping and preserves an additional block flag during block compaction.
Changes:
- Keep
PhaseChecks::CHECK_IR_RELAXEDenabled beyond indirect-call transformation and disable it after global morph to restore strict invariants. - Refresh per-statement side-effect flags after local morph statement rewrites and propagate effect flags in an inlining walker.
- Adjust DEBUG checks for temporarily stale implicit-byref
STORE_LCL_FLDinvariants and preserveBBF_RECURSIVE_TAILCALLwhen compacting blocks.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/coreclr/jit/objectalloc.cpp | Marks a sunk indirection as GTF_IND_NONFAULTING after extracting side effects. |
| src/coreclr/jit/lclmorph.cpp | Updates statement side effects after local morph changes; adjusts local-address def flags. |
| src/coreclr/jit/fginline.cpp | Propagates child effect flags to the parent after late devirtualization updates. |
| src/coreclr/jit/fgdiagnostic.cpp | DEBUG-only IR validation tweaks (implicit-byref stale window; node-threading check gating). |
| src/coreclr/jit/compiler.h | Adds DEBUG-only state to track the implicit-byref “stale lcl fld” window. |
| src/coreclr/jit/compiler.cpp | Extends relaxed IR checking through global morph and disables it afterwards. |
| src/coreclr/jit/block.h | Preserves BBF_RECURSIVE_TAILCALL when compacting blocks. |
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
diffs are fairly minimal. TP is about 0.1%, not sure I can get any lower. |
Summary
Testing
Note
This pull request description was generated with GitHub Copilot.