diff options
author | Richard Biener <rguenther@suse.de> | 2022-08-25 16:27:12 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2022-08-26 08:23:50 +0200 |
commit | 8b4d528d8c57ad7a2d5e39427bf4af7b8c1668c3 (patch) | |
tree | 80b019eafb2699382dd7350f7b9ace146e416556 | |
parent | eb6358247a9386db2828450477d86064f213e0a8 (diff) | |
download | gcc-8b4d528d8c57ad7a2d5e39427bf4af7b8c1668c3.zip gcc-8b4d528d8c57ad7a2d5e39427bf4af7b8c1668c3.tar.gz gcc-8b4d528d8c57ad7a2d5e39427bf4af7b8c1668c3.tar.bz2 |
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.
-rw-r--r-- | gcc/gimple-predicate-analysis.cc | 10 |
1 files 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<gphi *> (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<gphi *> (def), cd_root, edges, + visited); } else { |