[10] RFR(S) 8189064: Crash with compiler/codegen/*Vect.java on Solaris-sparc

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Oct 27 02:02:15 UTC 2017


webrev: http://cr.openjdk.java.net/~kvn/8189064/webrev.00/
https://bugs.openjdk.java.net/browse/JDK-8189064

New code from JDK-8187601 triggers an other round of loopopts to try to unroll more loops which were not vectorized. But that also trigger second round of vectorization. To avoid vectorization of 
already vectorized loops there is cl->is_vectorized_loop() check in SuperWord::transform_loop().
Unfortunately cl->mark_loop_vectorized() is called in SuperWord::output() under several conditions and one of them (compare vector length with unroll count) is not true on SPARC because it has very 
small vectors (8 bytes) as result cl->mark_loop_vectorized() is not called.

The fix is unconditionally call cl->mark_loop_vectorized() when vectors are generated.
I also modified JDK-8187601 changes to trigger an other round of loopopts only when main loop is not vectorized.

Failed vector tests from bug report passed. I submitted pre-integration testing.

Thanks,
Vladimir


More information about the hotspot-compiler-dev mailing list