RFR: 8375010: C2 VectorAPI: assert(vbox->is_CheckCastPP()) failed: should be expanded [v3]
Quan Anh Mai
qamai at openjdk.org
Mon Jan 19 17:11:56 UTC 2026
On Fri, 16 Jan 2026 12:51:21 GMT, Kerem Kat <krk at openjdk.org> wrote:
>> The check `vect->is_Vector() || vect->is_LoadVector()` doesn't handle `Proj` nodes that resolve to vector types, causing an assertion failure when such nodes flow through a `Phi` into `VectorBox`.
>
> Kerem Kat has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains four additional commits since the last revision:
>
> - Merge branch 'master' into fix-c2-checkCastPP
> - 8374903: C2 VectorAPI: assert(vbox->as_Phi()->region() == vect->as_Phi()->region()) failed
> - Simplify expand_vbox_node_helper by merging VectorBox Phi handling
> - 8375010: C2 VectorAPI: assert(vbox->is_CheckCastPP()) failed: should be expanded
src/hotspot/share/opto/vector.cpp line 331:
> 329: // Handle the case when the allocation input to VectorBoxNode is a Phi.
> 330: // This is generated after the transformation in PhiNode::merge_through_phi:
> 331: // Phi (VectorBox1 VectorBox2) => VectorBox (Phi1 Phi2)
Should this be something like:
Phi(VectorBox(vbox1, vect1), VectorBox(vbox2, vect2)) -> VectorBox(Phi(vbox1, vbox2), Phi(vect1, vect2))
I think it is a bit clearer, but it is fine either way.
test/hotspot/jtreg/compiler/vectorapi/VectorBoxExpandPhi.java line 1:
> 1: /*
Can these 2 tests be merged into 1?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/29200#discussion_r2705566555
PR Review Comment: https://git.openjdk.org/jdk/pull/29200#discussion_r2705570455
More information about the hotspot-compiler-dev
mailing list