RFR: 8275326: C2: assert(no_dead_loop) failed: dead loop detected [v3]
Vladimir Kozlov
kvn at openjdk.java.net
Mon Nov 29 15:53:12 UTC 2021
On Mon, 29 Nov 2021 11:13:32 GMT, Christian Hagedorn <chagedorn at openjdk.org> wrote:
>> src/hotspot/share/opto/cfgnode.cpp line 2321:
>>
>>> 2319: // visiting it in the transformations below.
>>> 2320: igvn->replace_node(this, result);
>>> 2321: igvn->set_type(result, result->bottom_type());
>>
>> Did you consider simply cut off Phi's inputs with `top` by using `replace_input_of()`?
>
> Unfortunately, this does not work. When doing the dead loop check for `11853 Phi` in the `phase->transform(phi)` call below, we find the `this` phi (`989 Phi`) by following the inputs of `11853 Phi` and conclude it's dead loop safe. This means we would need to cut the outputs of `989 Phi`. The only good way I found to achieve that is to directly replace the `this` phi here with the resulting mergemem node. Otherwise, we somehow need to restore the outputs again after the transformations to correctly subsume the `this` phi later.
Okay.
-------------
PR: https://git.openjdk.java.net/jdk/pull/6276
More information about the hotspot-compiler-dev
mailing list