]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
phiopt: Move check for maybe_undef_p slightly earlier
authorAndrew Pinski <quic_apinski@quicinc.com>
Sun, 27 Oct 2024 03:37:36 +0000 (20:37 -0700)
committerAndrew Pinski <quic_apinski@quicinc.com>
Mon, 28 Oct 2024 08:17:01 +0000 (01:17 -0700)
This moves the check for maybe_undef_p in match_simplify_replacement
slightly earlier before figuring out the true/false arg using arg0/arg1
instead.
In most cases this is no difference in compile time; just in the case
there is an undef in the args there would be a slight compile time
improvement as there is no reason to figure out which arg corresponds
to the true/false side of the conditional.

Bootstrapped and tested on x86_64-linux-gnu.

gcc/ChangeLog:

* tree-ssa-phiopt.cc (match_simplify_replacement): Move
check for maybe_undef_p earlier.

Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
gcc/tree-ssa-phiopt.cc

index f8b119ea8361cfb1be90a5e7520944c1c22b2d17..cffafe101a43b0f8b6afe585567d5c633cc4e439 100644 (file)
@@ -943,6 +943,13 @@ match_simplify_replacement (basic_block cond_bb, basic_block middle_bb,
                                          stmt_to_move_alt))
     return false;
 
+  /* Do not make conditional undefs unconditional.  */
+  if ((TREE_CODE (arg0) == SSA_NAME
+       && ssa_name_maybe_undef_p (arg0))
+      || (TREE_CODE (arg1) == SSA_NAME
+         && ssa_name_maybe_undef_p (arg1)))
+    return false;
+
     /* At this point we know we have a GIMPLE_COND with two successors.
      One successor is BB, the other successor is an empty block which
      falls through into BB.
@@ -982,13 +989,6 @@ match_simplify_replacement (basic_block cond_bb, basic_block middle_bb,
       arg_false = arg0;
     }
 
-  /* Do not make conditional undefs unconditional.  */
-  if ((TREE_CODE (arg_true) == SSA_NAME
-       && ssa_name_maybe_undef_p (arg_true))
-      || (TREE_CODE (arg_false) == SSA_NAME
-         && ssa_name_maybe_undef_p (arg_false)))
-    return false;
-
   tree type = TREE_TYPE (gimple_phi_result (phi));
   {
     auto_flow_sensitive s1(stmt_to_move);