Integrated: 8304948: [vectorapi] C2 crashes when expanding VectorBox
Eric Liu
eliu at openjdk.org
Fri May 5 00:38:30 UTC 2023
On Mon, 17 Apr 2023 08:43:28 GMT, Eric Liu <eliu at openjdk.org> wrote:
> This patch fixes C2 failure with SIGSEGV due to endless recursion.
>
> With test case VectorBoxExpandTest.java in this patch, C2 would generate IR graph like below:
>
>
> ------------
> / \
> Region | VectorBox |
> \ | / |
> Phi |
> | |
> | |
> Region | VectorBox |
> \ | / |
> Phi |
> | |
> |------------/
> |
>
>
>
> This Phi will be optimized by merge_through_phi [1], which transforms `Phi (VectorBox VectorBox)` into `VectorBox (Phi Phi)` to pursue opportunity of combining VectorBox with VectorUnbox. In this process, either the pre type check [2] or the process cloning Phi nodes [3], the circle case is well considered to avoid falling into endless loop.
>
> After merge_through_phi, each input Phi of new VectorBox has the same shape with original root Phi before merging (only VectorBox has been replaced). After several other optimizations, C2 would expand VectorBox [4] on a graph like below:
>
>
> ------------
> / \
> Region | Proj |
> \ | / |
> Phi |
> | |
> | |
> Region | Proj |
> \ | / |
> Phi |
> | |
> |------------/
> |
> | Phi
> | /
> VectorBox
>
>
> which the circle case should be taken into consideration as well.
>
> [TEST]
> Full Jtreg passed without new failure.
>
> [1] https://github.com/openjdk/jdk/blob/master/src/hotspot/share/opto/cfgnode.cpp#L2554
> [2] https://github.com/openjdk/jdk/blob/master/src/hotspot/share/opto/cfgnode.cpp#L2571
> [3] https://github.com/openjdk/jdk/blob/master/src/hotspot/share/opto/cfgnode.cpp#L2531
> [4] https://github.com/openjdk/jdk/blob/master/src/hotspot/share/opto/vector.cpp#L311
This pull request has now been integrated.
Changeset: 46df171d
Author: Eric Liu <eliu at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/46df171d537c0d9cb1df2d7915cc745a7f524557
Stats: 165 lines in 3 files changed: 136 ins; 9 del; 20 mod
8304948: [vectorapi] C2 crashes when expanding VectorBox
Reviewed-by: thartmann, qamai
-------------
PR: https://git.openjdk.org/jdk/pull/13489
More information about the hotspot-compiler-dev
mailing list