From f2b7509d5a1264083dee008de31df7221c725dbd Mon Sep 17 00:00:00 2001 From: Roland Westrelin Date: Tue, 28 Jan 2020 13:36:30 +0100 Subject: [PATCH] 8237951: CTW: C2 compilation fails with "malformed control flow" Reviewed-by: vlivanov, kvn --- src/hotspot/share/opto/phaseX.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/hotspot/share/opto/phaseX.cpp b/src/hotspot/share/opto/phaseX.cpp index b7ad8a4873a..afe44085f4e 100644 --- a/src/hotspot/share/opto/phaseX.cpp +++ b/src/hotspot/share/opto/phaseX.cpp @@ -1762,8 +1762,11 @@ void PhaseCCP::analyze() { if (m->is_Call()) { for (DUIterator_Fast i2max, i2 = m->fast_outs(i2max); i2 < i2max; i2++) { Node* p = m->fast_out(i2); // Propagate changes to uses - if (p->is_Proj() && p->as_Proj()->_con == TypeFunc::Control && p->outcnt() == 1) { - worklist.push(p->unique_out()); + if (p->is_Proj() && p->as_Proj()->_con == TypeFunc::Control) { + Node* catch_node = p->find_out_with(Op_Catch); + if (catch_node != NULL) { + worklist.push(catch_node); + } } } }