RFR: 8263577: C2: reachable nodes shouldn't have dead uses at the end of optimizations

Xin Liu xliu at openjdk.java.net
Wed Mar 17 22:52:48 UTC 2021


On Mon, 15 Mar 2021 12:33:19 GMT, Roland Westrelin <roland at openjdk.org> wrote:

> It's not uncommon for c2 to leave dead uses hanging from reachable
> nodes. It's usually harmless but can cause confusion (such as in
> valhalla JDK-8262289, not reproducible with non valhalla code AFAICT).
> 
> Most of the time, these are caused by calls to set_req() during igvn
> that should be set_req_X() calls. I added a verification pass at the
> end of optimization and fixed all the ones I found.

hi, @rwestrel 

Is Node::set_req_X() same as PhaseIterGVN::replace_input_of()? 
This even supports delayed hash. can I use them interchangeably? 

  // Replace ith edge of "n" with "in"
  void replace_input_of(Node* n, int i, Node* in) {
    rehash_node_delayed(n);
    n->set_req_X(i, in, this);
  }

-------------

PR: https://git.openjdk.java.net/jdk/pull/3012


More information about the hotspot-compiler-dev mailing list