From 8b4d528d8c57ad7a2d5e39427bf4af7b8c1668c3 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Thu, 25 Aug 2022 16:27:12 +0200 Subject: Improve uninit_analysis::collect_phi_def_edges This avoids expanding an edge to those of a PHI def if it is not may-undefined, reducing the number of compute_control_dep_chain calls. * gimple-predicate-analysis.cc (uninit_analysis::collect_phi_def_edges): Only expand a PHI def edge when it is possibly undefined. --- gcc/gimple-predicate-analysis.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gcc/gimple-predicate-analysis.cc b/gcc/gimple-predicate-analysis.cc index 079e060..0d973a9 100644 --- a/gcc/gimple-predicate-analysis.cc +++ b/gcc/gimple-predicate-analysis.cc @@ -605,11 +605,7 @@ uninit_analysis::collect_phi_def_edges (gphi *phi, basic_block cd_root, { gimple *def = SSA_NAME_DEF_STMT (opnd); - if (gimple_code (def) == GIMPLE_PHI - && dominated_by_p (CDI_DOMINATORS, gimple_bb (def), cd_root)) - collect_phi_def_edges (as_a (def), cd_root, edges, - visited); - else if (!m_eval (opnd)) + if (!m_eval (opnd)) { if (dump_file && (dump_flags & TDF_DETAILS)) { @@ -622,6 +618,10 @@ uninit_analysis::collect_phi_def_edges (gphi *phi, basic_block cd_root, } edges->safe_push (opnd_edge); } + else if (gimple_code (def) == GIMPLE_PHI + && dominated_by_p (CDI_DOMINATORS, gimple_bb (def), cd_root)) + collect_phi_def_edges (as_a (def), cd_root, edges, + visited); } else { -- cgit v1.1