RFR(M): 8229495: SIGILL in C2 generated OSR compilation

Roland Westrelin rwestrel at redhat.com
Thu Jul 9 11:43:55 UTC 2020


Hi Christian,

new webrev:
http://cr.openjdk.java.net/~roland/8229495/webrev.01/

> I submitted some testing.

Thanks.

> 1824         // Add back the predicate for the value at the beginning of 
> the first entry
> 1825         prev_proj = clone_skeleton_predicate(iff, init, max_value, 
> entry, proj, ctrl, outer_loop, prev_proj);
>
> This comment seems to be outdated as you now clone both skeleton 
> predicates with the same function call in different loop iterations.

I tweaked the comment.

>
> - In loopopts.cpp: While fixing the spacing you could also add curly 
> braces to the one-liner if statements like
>
> 955   if (n_op == Op_MergeMem) return n;

Ok.

> While at it, you might want to consider to update other uses of the 
> pattern Opcode() == Op_Opaque1 by is_Opaque1() as well like in 
> loopTransform.cpp:
>
> 1158     assert(iff->in(1)->in(1)->Opcode() == Op_Opaque1, "unexpected 
> predicate shape");

Except in this case it really is an Opaque1 instead of a subclass so
using is_Opaque1() would weaken the assert.

> I observed a Java Fuzzer crash ("fatal error: DEBUG MESSAGE: duplicated 
> predicate failed which is impossible") this weekend which looked very 
> similar to this bug and indeed it could be fixed with your patch. You 
> could add it as additional testcase. Here is the simplified code and the 
> command line I used to reproduce it.

Thanks for test case. I included it in the new webrev.

Roland.



More information about the hotspot-compiler-dev mailing list