From: Richard Biener Date: Thu, 25 Aug 2022 14:27:12 +0000 (+0200) Subject: Improve uninit_analysis::collect_phi_def_edges X-Git-Tag: basepoints/gcc-14~4997 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8b4d528d8c57ad7a2d5e39427bf4af7b8c1668c3;p=thirdparty%2Fgcc.git 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. --- diff --git a/gcc/gimple-predicate-analysis.cc b/gcc/gimple-predicate-analysis.cc index 079e06009fde..0d973a9e25a0 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 {