changeset 58856:c7152f7e01a6

8237951: CTW: C2 compilation fails with "malformed control flow" Reviewed-by: vlivanov, kvn
author roland
date Tue, 28 Jan 2020 13:36:30 +0100
parents 4639cbdcbf27
children 9b3d5cc71cea
files src/hotspot/share/opto/phaseX.cpp
diffstat 1 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/hotspot/share/opto/phaseX.cpp	Mon Feb 03 09:39:39 2020 +0100
+++ b/src/hotspot/share/opto/phaseX.cpp	Tue Jan 28 13:36:30 2020 +0100
@@ -1762,8 +1762,11 @@
         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);
+              }
             }
           }
         }