RFR(S): 8136926: phi == NULL assert in PhaseIdealLoop::try_move_store_after_loop
Berg, Michael C
michael.c.berg at intel.com
Tue Sep 22 19:31:42 UTC 2015
Roland, the code looks good. It happens so rarely anyways that doing the safe thing should never really cost us.
Thanks,
Michael
-----Original Message-----
From: hotspot-compiler-dev [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of Roland Westrelin
Sent: Tuesday, September 22, 2015 6:36 AM
To: hotspot compiler
Subject: RFR(S): 8136926: phi == NULL assert in PhaseIdealLoop::try_move_store_after_loop
http://cr.openjdk.java.net/~roland/8136926/webrev.00/
The crash happens when the code encounters 2 memory Phis as uses of the same store, both Phis have the loop head as control, both Phis are on the same memory slice (a field in an object). AFAICT, the graph is correct and we can indeed have 2 such memory Phis: the first one is created during parsing, the second one following EA when some locking/unlocking operations are removed and the memory graph is heavily simplified. Each Phi is used for a different execution path in the loop body.
I tried to write a test case to reproduce the bug with no success.
The fix I propose is to simply bail out of the optimization if 2 memory Phis are encountered.
Roland.
More information about the hotspot-compiler-dev
mailing list