RFR: 8344251: C2: remove blackholes with dead control input
Vladimir Kozlov
kvn at openjdk.org
Tue Apr 15 16:20:47 UTC 2025
On Tue, 15 Apr 2025 15:12:39 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
>> When a BlackholeNode's control input becomes dead, the node is not removed causing the crash
>>
>> assert(!in->is_CFG()) failed: CFG Node with no controlling input?
>>
>> In the case reported in the issue, after a round of peeling, a condition becomes constant, and the branch containing the blackhole becomes dead:
>>
>> <img src="https://github.com/user-attachments/assets/f8e5ec85-ddf5-4018-a01e-30ea90d9d74f" width="400">
>> <img src="https://github.com/user-attachments/assets/626e40a1-be2f-4b1c-bc56-9760a26660f2" width="400">
>>
>> I simply use `Node::remove_dead_region(PhaseGVN*, bool)` to remove the blackhole, as many other node types do.
>
> test/hotspot/jtreg/compiler/blackhole/DeadBhElimination.java line 39:
>
>> 37: public static void main(String[] args) {
>> 38: TestFramework.runWithFlags(
>> 39: "-Xcomp",
>
> `-Xcomp` is likely too heavy-weight here. Other tests use `-XX:CompileThreshold=100`. I think that is enough for IR tests to compile the method.
Or you can di separate runs with different flags, including default.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24663#discussion_r2045005337
More information about the hotspot-compiler-dev
mailing list