RFR: 8255000: C2: Unify IGVN processing when loop opts are over [v2]
Vladimir Ivanov
vlivanov at openjdk.java.net
Wed Oct 21 08:14:30 UTC 2020
> There is a number of use cases when ideal nodes (either individual or even the whole classes) delay some
> transformations until loop optimizations are over.
> Unfortunately, there are multiple solutions in the code base with their pros and cons: either a custom per-node class
> logic (e.g., for range check dependent `CastII` or `Opaque4` nodes) or `Compile::major_progress() == 0` as a signal
> that loop opts are over. I propose to introduce a unified approach to reliably process nodes that require (or may
> benefit from) IGVN pass once loop opts are finally over and migrate existing use cases to it.
> After some experimentation, I decided not to rely on `Compile::major_progress()` because:
> * it's hard to reason about its properties (there are many places where it is adjusted);
> * attempts to verify its monotonicity using asserts triggered too many sporadic failures.
>
> So, I wasn't persuaded that `Compile::major_progress() == 0` is reliable enough and introduced a dedicated flag
> (`Compile::post_loop_opts_phase()`) which signals that loop opts are over.
> (The patch - 69a93d4 commit - is on top of 8255026 cleanup which is reviewed separately.)
>
> Testing: tier1-tier5
Vladimir Ivanov has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev
excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since
the last revision:
- Merge branch 'master' into 8255000+8255026
- Unify post loop opts IGVN
- 8255026: C2: Miscellaneous cleanups in Compile and PhaseIdealLoop code
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/751/files
- new: https://git.openjdk.java.net/jdk/pull/751/files/69a93d4d..590a6493
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=751&range=01
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=751&range=00-01
Stats: 35020 lines in 471 files changed: 24314 ins; 8566 del; 2140 mod
Patch: https://git.openjdk.java.net/jdk/pull/751.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/751/head:pull/751
PR: https://git.openjdk.java.net/jdk/pull/751
More information about the shenandoah-dev
mailing list