JDK-6515373 : Self referenced phi causes assert in falltrough case in RegionNode::Ideal
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 7
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • OS: solaris_9
  • CPU: sparc
  • Submitted: 2007-01-19
  • Updated: 2010-04-03
  • Resolved: 2007-01-31
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7 Other
6u2Fixed 7Fixed hs10Fixed
Related Reports
Relates :  
Description
Self referenced phi causes assert in falltrough case in RegionNode::Ideal():

 assert(dead->outcnt() == 0 && !dead->is_top(), "node must be dead");

The stack looks like:

  [3] PhaseIterGVN::remove_dead_node()
  [4] PhaseIterGVN::subsume_node()
  [5] RegionNode::Ideal()
  [6] PhaseIterGVN::transform_old()
  [7] PhaseIterGVN::optimize

The ideal case has found a phi with a single input and wants to replace it. The single input is itself!

 2644   Phi     ===  2641  2644

Comments
SUGGESTED FIX Webrev: http://prt-web.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2007/20070122112609.kvn.6515373/workspace/webrevs/webrev-2007.01.22/index.html
22-01-2007

SUGGESTED FIX We should check if phi->in(1)==phi and kill it in this case.
19-01-2007

EVALUATION The assert is causes by this call where n == n->in(1): igv->subsume_node(n, n->in(1));
19-01-2007