You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Improve EH dead code elimination
Update `fgRemoveDeadBlocks()` to only treat EH handlers as reachable
if their corresponding `try` block entry is reachable.
This causes more dead code to be eliminated in handlers that are
not reachable.
There is a little more work to do to completely clean these up:
1. If a `try` is not reachable, we should get rid of its entire EH table
entry. Currently, its block is generated as `int3` (on xarch).
2. Even though the handler is not reachable, we still generate the prolog
followed by `int3` for the body.
Contributes to #82335
* Fix BBJ_EHFILTERRET handling in fgRemoveBlockAsPred
fgRemoveBlockAsPred had special handling to not decrease the bbRefs count
of the filter-handler targeted by BBJ_EHFILTERRET. This is incorrect, as
the filter-handler already has an extra "beginning of handler" extra
ref count. Possibly this code was never invoked before as filters were
not previously removed.
Also, fix the JitDump output of the filter ret block in block dumps.
* Put back arm32 BBJ_CALLFINALLY/BBJ_ALWAYS pair check
0 commit comments