RFR(S): Test crashed with assert(phi->operand_count() != 1 || phi->subst() != phi) failed: missed trivial simplification

Doerr, Martin martin.doerr at sap.com
Mon Nov 11 10:39:31 UTC 2019


Hi,

some C1 assertions currently don't deal correctly with illegal phi functions (phi function with illegal type due to type conflict).
Since JDK-8214352 we bail out in fewer situations, so C1 needs to deal with a few more illegal phi cases.

The assertion (see headline) in PhiSimplifier doesn't support illegal phi, but the simplify call before it does (by just skipping).

Another assertion which needs to skip illegal phi is in c1_Optimizer where we merge a block with its unique successor.
If a local value of the succeeding block is coming from an illegal phi function, we drop it and take the value from the first block.
This is correct, only the assertion doesn't expect that at the moment.

So I'd like to fix these 2 assertions I found:
http://cr.openjdk.java.net/~mdoerr/8233820_C1_illegal_phi/webrev.00/

Best regards,
Martin



More information about the hotspot-compiler-dev mailing list