[NFC] Avoid quadratic time when precomputing blocks #6862
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When precomputing fails on a child block of a parent block, there is no point
to precompute the parent, as that will fail as well.
At least, I can't think of any instruction sequence in wasm that could cause that
(see detailed comment in the code). I also fuzzed this (see second commit,
which is later reverted), and failed to find anything after a few thousand
iterations. But in theory this is not NFC if there is something that could be
optimized.
This makes
--precompute
on Emscripten'stest_biggerswitch
go from 1.44seconds to 0.02 seconds (not a typo, that is 72x faster). The absolute number
is not that big, but we do run this pass more than once, so it saves a noticeable
chunk of time.