[16] RFR(M): 8249607: C2: assert(!had_error) failed: bad dominance
Christian Hagedorn
christian.hagedorn at oracle.com
Tue Aug 25 17:42:38 UTC 2020
On 25.08.20 16:13, Roland Westrelin wrote:
>
>> In the testcase, a LoadSNode is cloned in
>> PhaseIdealLoop::split_if_with_blocks_post() for each use such that they
>> can float out of a loop. To ensure that these loads cannot float back
>> into the loop, we pin them by setting their control input [1]. In the
>> testcase, all 3 new clones are pinned to a loop exit node that is part
>> of an outer strip mined loop (see [2]).
>
> Do I understand this right, that all 3 clones are pinned with the same
> control? So they common and only of them is kept?
Yes, exactly. All are pinned to the inner loop exit node. But at the
time we hit the assertion failure, we still got one cloned load (903
LoadS) that is an input to the store (575 StoreI) that's going into the
outer strip mined loop safepoint, and one load (901 LoadS) that is
triggering the dominance failure. LoadS 902 was removed at some point in
between due to other optimizations.
Best regards,
Christian
More information about the hotspot-compiler-dev
mailing list