diff -r f33e2b727e10 -r 4373df7c4a92 src/share/vm/opto/loopnode.cpp --- a/src/share/vm/opto/loopnode.cpp Fri Apr 24 04:23:06 2020 +0100 +++ b/src/share/vm/opto/loopnode.cpp Mon Mar 23 19:52:34 2020 +0800 @@ -1538,7 +1538,7 @@ // If I am a shared header (multiple backedges), peel off the many // backedges into a private merge point and use the merge point as // the one true backedge. - if( _head->req() > 3 ) { + if (_head->req() > 3 && !_irreducible) { // Merge the many backedges into a single backedge but leave // the hottest backedge as separate edge for the following peel. merge_many_backedges( phase );