RFR(S): 8231291: C2: loop opts before EA should maximally unroll loops
Roland Westrelin
rwestrel at redhat.com
Mon Jan 13 15:25:28 UTC 2020
> I think the right way to fix the bug is to transform HaltNode after it
> is added to RootNode (e.g., as done in AllocateArrayNode::Ideal() [1]).
> In case HaltNode is eliminiated, RootNode should be put on worklist.
AFAICT, that would not work. PhaseGVN::transform() doesn't change uses
of the node being transformed. The RootNode would need to be explicity
pushed on the igvn worklist with a call to
Compile::record_for_igvn(). But with the change to must_be_not_null(),
there's no need for that. So I don't see anything that need fixing to be
honest.
> I quickly looked through other places with the same idiom and
> MemNode::Ideal_common() looks suspicious [3]. I don't see how it can
> suffer from the same problem, but it would be nice to fix it as well.
> I'm fine with filing a separate bug for it.
For the Halt node to be top, ctl would need to be top but that's handled
before or frame would need to be top which doesn't seem possible so I
don't see a problem there.
Roland.
More information about the hotspot-compiler-dev
mailing list