Integrated: 8290850: C2: create_new_if_for_predicate() does not clone pinned phi input nodes resulting in a broken graph
Christian Hagedorn
chagedorn at openjdk.org
Thu Dec 8 11:27:01 UTC 2022
On Thu, 1 Dec 2022 12:26:56 GMT, Christian Hagedorn <chagedorn at openjdk.org> wrote:
> The test cases of this bug reveal the same problem with `PhaseIdealLoop::create_new_if_for_predicate()` as in [JDK-8271954](https://bugs.openjdk.org/browse/JDK-8271954) (reusing pinned data nodes for different UCT paths into the UCT phi - see PR description of https://github.com/openjdk/jdk/pull/5185). While JDK-8271954 only fixed the usage of `PhaseIdealLoop::create_new_if_for_predicate()` for one specific case in loop unswitching, we now need this fix for other usages of `PhaseIdealLoop::create_new_if_for_predicate()` as well. I've found failing cases for most of the usages but I think we should always do a proper cloning as originally added with JDK-8271954. This is what a propose with this patch.
>
> To always do this cloning, I've replaced the `UnswitchingAction` by a `rewire_uncommon_proj_phi_inputs` bool that is false by default but can be set if we should only do a rewiring (we can still do the rewiring for the slow loop as previously done with `UnswitchingAction::SlowLoopRewiring`, also see https://github.com/openjdk/jdk/pull/5185 for more details). However, the current fix does not update ctrl for the slow loop nodes - I've fixed that.
>
> I've reused the implementation of `clone_data_nodes_for_fast_loop()` but refactored and split that method into multiple methods to reuse some of them for the ctrl update of the slow loop nodes.
>
> Thanks,
> Christian
This pull request has now been integrated.
Changeset: 49b86224
Author: Christian Hagedorn <chagedorn at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/49b86224aacc7fd8b4d3354a85d72ef636a18a12
Stats: 552 lines in 3 files changed: 455 ins; 32 del; 65 mod
8290850: C2: create_new_if_for_predicate() does not clone pinned phi input nodes resulting in a broken graph
Reviewed-by: thartmann, kvn
-------------
PR: https://git.openjdk.org/jdk/pull/11452
More information about the hotspot-compiler-dev
mailing list