[14] RFR(S): 8230062: assert(i == p->size()-1) failed: must be last element of the pack

Tobias Hartmann tobias.hartmann at oracle.com
Wed Sep 25 06:18:42 UTC 2019


Hi Christian,

looks good to me!

Great work - knowing how much you suffered to get familiar with the various C2 optimizations that
are involved and especially to extract this simple regression test.

Best regards,
Tobias

On 24.09.19 16:13, Christian Hagedorn wrote:
> Hi
> 
> Please review the following patch:
> https://bugs.openjdk.java.net/browse/JDK-8230062
> http://cr.openjdk.java.net/~chagedorn/8230062/webrev.00/
> 
> The assertion is too strong. There are cases where a reduction chain is put into a superword pack
> but an intermediate result is used outside of the loop (see test case and [1]). This triggers the
> assertion failure. Moreover, it would be incorrect to 'continue' in the loop on line 2054 (=
> allowing a replacement with a vector instruction) and not exclude this pack.
> 
> The fix simply adds the assertion check as a condition to the continue statement. If we encounter
> such an intermediate result use outside of the loop then is_vector_use() returns false and we do not
> use a vector instruction (i.e. return false on line 2056).
> 
> Thank you!
> 
> Best regards,
> Christian
> 
> 
> [1] https://bugs.openjdk.java.net/secure/attachment/84959/IntermediateResultUse.png


More information about the hotspot-compiler-dev mailing list