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

C2 VerifyIterativeGVN: Umbrella for extending Ideal and Identity verification (JDK-8347273)

XMLWordPrintable

      In JDK-8347273, we added IGVN Ideal and Identity verification. But we had to exclude a lot of nodes from verification. We should investigate and possibly fix them one-by-one, and file subtasks here.

      In many cases, the issue is just a missing notification when inputs of inputs are changed. These would be good starter tasks. But there are probably also more complicated cases. And there are surely cases where verification will be impossible, because it is possible that the Idea / Identity optimizations traverse longer paths, and we cannot expect that notification makes it down that path. For those cases, we will have to leave the exception and document it well.

      What to do:
      - Go to PhaseIterGVN::verify_Ideal_for / PhaseIterGVN::verify_Identity_for.
      - You see that both have lots of "bailouts" from the verification, because the verification would currently fail. It would fail telling us that there is a missed optimization opportunity.
      - Pick any node type for which there is a bailout, and try to reproduce the failure.
      - Some already have a first analysis of what may be the issue, some have no initial investigation yet. Some may also have multiple issues, and so it can be a little tricky to know which one is the easiest to start with.
      - Just rely on your intuition, and pick one. Then try to find out as much as you can about it.
        - See what the graph looks like, and what optimization we are able to do in verification.
        - Assume that was a Ideal optimization during verification, then set a breakpoint for the same node->_idx, and step back to the last invocation of Ideal for the same node. See what the graph looks back then, and try to find out why the optimization did not work there. Write down that information so that you can report it later (in the PR, for example).
        - See if there is a fix for the problem. There could be other issues, but often is is a problem with worklist notification.
        - There are similar issues with missing optimizations / notification linked at JDK-8347273: JDK-8367483 JDK-8359603 JDK-8359602, so study those to see if your issue may be similar.
      - Feel free to file a subtask here, where you remove a verification bailout and fix the issue. You can also just contact me via email and send me the information. Then I can file a subtask for you. Filing and assigning tasks is important so we do not duplicate work.

            epeter Emanuel Peter
            epeter Emanuel Peter
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: