RFR: 8252188: Crash in OrINode::Ideal(PhaseGVN*, bool)+0x8b9
Vladimir Ivanov
vlivanov at openjdk.java.net
Sat Sep 19 16:02:06 UTC 2020
On Sat, 19 Sep 2020 01:45:57 GMT, Vladimir Kozlov <kvn at openjdk.org> wrote:
> Code added by [8248830](https://bugs.openjdk.java.net/browse/JDK-8248830) uses Node::is_Con() check when looking for
> constant shift values.
> Unfortunately it does not guarantee that it will be Integer constant because TOP node is also ConNode. I used C2 types
> to check and get shift values. I also refactor code to consolidate checks.
> Method degenerate_vector_rotate() in vectornode.cpp has is_Con() check and, in general, it could be TOP because we do
> loop optimizations after vectorization. I added isa_int() check and treat 'cnt' in other case as variable to do
> transformation on 'else' branch and let sub-graph collapse there. I also refactor degenerate_vector_rotate() to make it
> compact. I removed OrVNode::Ideal() method added by 8248830 because it is currently not used (it is for Vector API).
> And its code is convoluted and does not match code in OrINode::Ideal(). I moved Rotate vectorization tests into new
> test files TestIntVectRotate.java and TestLongVectRotate.java and added more tests methods for which vectors are
> created. Tested: tier1, hs-tier2, hs-tier3.
> Verified fix with replay file from bug report.
> I also checked that RotateBenchmark.java added by 8248830 still creates Rotate vectors after this fix.
>
> I created subtask to add new regerssion test later because this fix is urgent and I did not have time to prepare it.
>
> The fix was already reviewed on mailing list
> https://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2020-September/039886.html
Looks good.
-------------
Marked as reviewed by vlivanov (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/262
More information about the hotspot-compiler-dev
mailing list