RFR: 8274328: C2: Redundant CFG edges fixup in block ordering

Tobias Hartmann thartmann at openjdk.java.net
Thu Oct 28 07:47:10 UTC 2021


On Sun, 26 Sep 2021 10:40:43 GMT, Yi Yang <yyang at openjdk.org> wrote:

> I think Trace::fixup_blocks is redundant because PhaseCFG::fixup_flow will nevertheless fix up the CFG flow(i.e. flip successor blocks of IfNode) right after PhaseBlockLayout pass, we can remove this step when doing PhaseBlockLayout pass.(Testing: jtreg/compiler/c2, presubmit test)
> 
> https://github.com/openjdk/jdk/blob/5ec1cdcaf39229a7d2457313600b0dc2bf8c6453/src/hotspot/share/opto/compile.cpp#L2765
> 
> https://github.com/openjdk/jdk/blob/5ec1cdcaf39229a7d2457313600b0dc2bf8c6453/src/hotspot/share/opto/block.cpp#L1679
> 
> https://github.com/openjdk/jdk/blob/5ec1cdcaf39229a7d2457313600b0dc2bf8c6453/src/hotspot/share/opto/block.cpp#L908-L916

That looks good to me but I'm not an expert in that code. I submitted some testing and it all passed.

src/hotspot/share/opto/block.cpp line 916:

> 914:         ProjNode* tmp = proj0;
> 915:         proj0 = proj1;
> 916:         proj1 = tmp;

`swap(proj0, proj1)` can be used here.

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

Marked as reviewed by thartmann (Reviewer).

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


More information about the hotspot-compiler-dev mailing list