Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8188223

IfNode::range_check_trap_proj() should handle dying subgraph with single if proj

    Details

    • Subcomponent:
    • Resolved In Build:
      b31
    • Verification:
      Verified

      Backports

        Description

        I see the following failure (running lucene tests) that I can't reproduce anymore (removed replay file by mistake):

        assert((Opcode() != Op_If && Opcode() != Op_RangeCheck) || outcnt() == 2) failed: bad if #1

        V [libjvm.so+0x105f0ca] MultiNode::proj_out(unsigned int) const+0x144
        V [libjvm.so+0xc91b1a] IfNode::range_check_trap_proj(int&, Node*&, Node*&)+0x1f2
        V [libjvm.so+0xc91b8e] RangeCheckNode::is_range_check(Node*&, Node*&, int&)+0x56
        V [libjvm.so+0xc96a02] RangeCheckNode::Ideal(PhaseGVN*, bool)+0x1d0

        With subgraph shape:

        UNC->Region->IfProj->RangeCheck

        The region has the IfProj as single input. RegionNode::Ideal() finds that the subgraph is unreachable which causes the IfProj to be removed. RangeCheckNode::Ideal() is called on a dominated range check which walks the graph, hit the RangeCheck that has a single projection and causes a crash.

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  roland Roland Westrelin
                  Reporter:
                  roland Roland Westrelin
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  4 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: