]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Improve uninit_analysis::collect_phi_def_edges
authorRichard Biener <rguenther@suse.de>
Thu, 25 Aug 2022 14:27:12 +0000 (16:27 +0200)
committerRichard Biener <rguenther@suse.de>
Fri, 26 Aug 2022 06:23:50 +0000 (08:23 +0200)
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

index 079e06009fdeb0ce8479bf15befb0cfbd39bfa5a..0d973a9e25a0d62468e6e47cb7c78c0b6f9cb22c 100644 (file)
@@ -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
        {