RFR: 8327111: Replace remaining usage of create_bool_from_template_assertion_predicate() which requires additional OpaqueLoop*Nodes transformation strategies

Christian Hagedorn chagedorn at openjdk.org
Fri Apr 5 06:57:30 UTC 2024


https://github.com/openjdk/jdk/pull/18293 started to replace `create_bool_from_template_assertion_predicate()` usages to fix an endless DFS traversal problem. This patch is a follow-up to replace the last usage of `create_bool_from_template_assertion_predicate()` in `clone_assertion_predicate_and_initialize()` to completely fix the problem.

Depending on where `clone_assertion_predicate_and_initialize()` is called from, we need to clone the Template Assertion Predicate Expression differently:
- Create a new Template Assertion Predicate for a main loop: Clone everything except for the `OpaqueLoopInitNode` which needs to be replaced with a new `OpaqueLoopInitNode` (done with `clone_and_replace_init()`).
- Create an Initialized Assertion Predicate for all other cases: Clone everything except for the `OpaqueLoop*Nodes` which are replaced with an actual init and stride value (done with `clone_and_replace_init_and_stride()`).

Note that it's incorrect to _not_ create new Template Assertion Predicates in case we split the loop further (for example after peeling a loop). This will be eventually fixed with [JDK-8288981](https://bugs.openjdk.org/browse/JDK-8288981).

I've extended the test added with https://github.com/openjdk/jdk/pull/18293 to also cover the now fixed cases. 

Thanks,
Christian

-------------

Commit messages:
 - add more tests
 - 8327111: Replace remaining uses of create_bool_from_template_assertion_predicate() which involve additional transformations with new code from JDK-8327110

Changes: https://git.openjdk.org/jdk/pull/18628/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=18628&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8327111
  Stats: 186 lines in 5 files changed: 100 ins; 82 del; 4 mod
  Patch: https://git.openjdk.org/jdk/pull/18628.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/18628/head:pull/18628

PR: https://git.openjdk.org/jdk/pull/18628


More information about the hotspot-compiler-dev mailing list