-
Bug
-
Resolution: Fixed
-
P4
-
16
-
b21
RenumberLiveNodes pass sets on-stack allocated list (new_worklist) as Compile::_for_igvn, but doesn't reset it after IGVN. It makes Compile::_for_igvn unusable after RenumberLiveNodes is over.
2098 if (!failing() && RenumberLiveNodes && live_nodes() + NodeLimitFudgeFactor < unique()) {
2099 Compile::TracePhase tp("", &timers[_t_renumberLive]);
2100 initial_gvn()->replace_with(&igvn);
2101 for_igvn()->clear();
2102 Unique_Node_List new_worklist(C->comp_arena());
2103 {
2104 ResourceMark rm;
2105 PhaseRenumberLive prl = PhaseRenumberLive(initial_gvn(), for_igvn(), &new_worklist);
2106 }
2107 set_for_igvn(&new_worklist);
2108 igvn = PhaseIterGVN(initial_gvn());
2109 igvn.optimize();
2110 }
2098 if (!failing() && RenumberLiveNodes && live_nodes() + NodeLimitFudgeFactor < unique()) {
2099 Compile::TracePhase tp("", &timers[_t_renumberLive]);
2100 initial_gvn()->replace_with(&igvn);
2101 for_igvn()->clear();
2102 Unique_Node_List new_worklist(C->comp_arena());
2103 {
2104 ResourceMark rm;
2105 PhaseRenumberLive prl = PhaseRenumberLive(initial_gvn(), for_igvn(), &new_worklist);
2106 }
2107 set_for_igvn(&new_worklist);
2108 igvn = PhaseIterGVN(initial_gvn());
2109 igvn.optimize();
2110 }