RFR: 8357105: C2: compilation fails with "assert(false) failed: empty program detected during loop optimization" [v3]
Roberto Castañeda Lozano
rcastanedalo at openjdk.org
Mon May 26 10:15:51 UTC 2025
On Mon, 26 May 2025 06:33:09 GMT, Daniel Skantz <dskantz at openjdk.org> wrote:
>> This pull request contains a fix for JDK-8357105.
>>
>> The problem is performing stacked string concatenation optimization between a pair of StringBuilder.append().toString()-links SB1 and SB2, where the parameter of an append call in SB2 has a complex dependency on the result of SB1, which in turn is replaced by top() during stringopts -- similar to JDK-8271341, which had a diamond if-structure using the result of SB1, while in this case the use is an unstable If. In the attached regression test, a live part of the graph gets optimized away during later phases and ultimately the whole graph vanishes.
>>
>> The proposed solution is to simply exclude this specific case. This bug has existed for a long time and stacked concats is a niche optimization.
>>
>> Testing:
>> Tier1-4.
>>
>> Extra testing:
>> Ran Tier1-4 with an instrumented build and observed that we do not disable stacked concatenation in any previously known case after the fix.
>
> Daniel Skantz has updated the pull request incrementally with one additional commit since the last revision:
>
> add second run; - iteration count; add use of result
Looks good, thanks! Please re-run testing of your latest changes (if you haven't yet) before integration.
-------------
Marked as reviewed by rcastanedalo (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/25395#pullrequestreview-2867932983
More information about the hotspot-compiler-dev
mailing list