[jdk19] RFR: 8288112: C2: Error: ShouldNotReachHere() in Type::typerr()
Jatin Bhateja
jbhateja at openjdk.org
Mon Jul 11 20:50:38 UTC 2022
On Mon, 11 Jul 2022 13:56:23 GMT, Jatin Bhateja <jbhateja at openjdk.org> wrote:
>> [JDK-8284960](https://bugs.openjdk.org/browse/JDK-8284960) added new vector IR nodes and target specific backend support for ReverseByte vector operations.
>> For each scalar operation, auto-vectorizer analysis stage checks for existence of vector IR opcode and target specific backend implementation. While processing scalar IR nodes corresponding to Java SE APIs [Short/Character/Integer/Long].reverseBytes SLP analysis checks passes since relevant support already existed. This bug fix patch handles missing scalar reversebyte opcode checks in SLP backed to enable creation of corresponding vector IR nodes.
>>
>> A new JBS issue [JDK-8290034](https://bugs.openjdk.org/browse/JDK-8290034) is created to add the missing auto-vectorization support for bit reverse operation targeting JDK mainline.
>>
>> Kindly review and share your feedback.
>>
>> Best Regards,
>> Jatin
>
>> test\micro\org\openjdk\bench\java\lang\Longs.java:148: error: incompatible types: possible lossy conversion from long to in
>
>> Looks good to me, but I still have a problem with the error message. It seems like we could give a better error message if we detected the missing vectorization support earlier. What do you think?
>
> Hi @dean-long , Thanks for your comments, error occurs because SLP analysis passes all the checks to enable creation of vector ReverseByte IR, but SLP backend had this case missing due to which some of the IR nodes were vectorized and were feeding into a scalar ReverseByte node, thus while doing a value computation compiler encounters a meet operation b/w vector and scalar lattice. Since its an error related to internals of JIT compiler it will not be adding any value to user and just represent incorrect control path selected by compiler. With this patch we do not hit the trap any more.
> @jatin-bhateja Right, a better error message wouldn't be a value-add to users, but if we could detect it sooner, like in SuperWord::output(), that might be useful to compiler engineers debugging issues.
Hi @dean-long , Agree, I have changed the error message generated with -XX:+TraceLoopOpts to be more explicit like.
**SWPointer::output: Unhandled scalar opcode (ReverseBytesI), ShouldNotReachHere, exiting SuperWord**
Since patch already handles the missing scalar case, hence this message will not be generated.
-------------
PR: https://git.openjdk.org/jdk19/pull/128
More information about the hotspot-compiler-dev
mailing list