Fix `fgUpdateChangedFlowGraph`. (#39878)
authorEugene Rozenfeld <erozen@microsoft.com>
Sat, 25 Jul 2020 03:55:49 +0000 (20:55 -0700)
committerGitHub <noreply@github.com>
Sat, 25 Jul 2020 03:55:49 +0000 (20:55 -0700)
commitb179d69b24b45732537e5170f360851ce4dc1ab3
tree95cf4cab4e2ea8843dac55cb3915c32f9694beaa
parent13fa14e35ac0b94d4935477950122dea0bf419a8
Fix `fgUpdateChangedFlowGraph`. (#39878)

`fgComputeDoms` has an assumption that the flow graph
has no unreachable blocks. It's checked with this assert:

https://github.com/dotnet/runtime/blob/ad325b014124b1adb9306abf95fdac85e3f7f2f4/src/coreclr/src/jit/flowgraph.cpp#L2342

This assert fired when testing #39474 (`Convert Math{F}.CoreCLR methods from FCall to QCall`)
when we are updating the flow graph after inserting GC polls.

This change switches `fgUpdateChangedFlowGraph` to call `fgComputeReachability`,
which both removes unreachable blocks and calls `fgComputeDoms`.

pin-icount reported a 0.0043% throughput improvement, which is within noise level.
src/coreclr/src/jit/flowgraph.cpp