]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
trans.c (Regular_Loop_to_gnu): Replace tests on individual flag_unswitch_loops and...
authorEric Botcazou <ebotcazou@adacore.com>
Fri, 8 Feb 2019 11:08:07 +0000 (11:08 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Fri, 8 Feb 2019 11:08:07 +0000 (11:08 +0000)
* gcc-interface/trans.c (Regular_Loop_to_gnu): Replace tests on
individual flag_unswitch_loops and flag_tree_loop_vectorize switches
with test on global optimize switch.
(Raise_Error_to_gnu): Likewise.

From-SVN: r268673

gcc/ada/ChangeLog
gcc/ada/gcc-interface/trans.c

index 7664aff2800ca59d7bebea263fb0bef6955949f3..8e485add04fc001260acc3eb1d63670120a93d5f 100644 (file)
@@ -1,3 +1,10 @@
+2019-02-08  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/trans.c (Regular_Loop_to_gnu): Replace tests on
+       individual flag_unswitch_loops and flag_tree_loop_vectorize switches
+       with test on global optimize switch.
+       (Raise_Error_to_gnu): Likewise.
+
 2019-02-07  Eric Botcazou  <ebotcazou@adacore.com>
 
        * s-linux-sparc.ads (ETIMEDOUT): Set to correct value.
index c2c385d7030859dcf537a2dae1e2d950ee55d368..7430af10e83f0d4d7be776c8695592a86c4f0c34 100644 (file)
@@ -3102,7 +3102,7 @@ Loop_Statement_to_gnu (Node_Id gnat_node)
         unswitching is enabled, do not require the loop bounds to be also
         invariant, as their evaluation will still be ahead of the loop.  */
       if (vec_safe_length (gnu_loop_info->checks) > 0
-        && (make_invariant (&gnu_low, &gnu_high) || flag_unswitch_loops))
+        && (make_invariant (&gnu_low, &gnu_high) || optimize >= 3))
        {
          struct range_check_info_d *rci;
          unsigned int i, n_remaining_checks = 0;
@@ -3154,22 +3154,22 @@ Loop_Statement_to_gnu (Node_Id gnat_node)
 
          /* Note that loop unswitching can only be applied a small number of
             times to a given loop (PARAM_MAX_UNSWITCH_LEVEL default to 3).  */
-         if (0 < n_remaining_checks && n_remaining_checks <= 3
-             && optimize > 1 && !optimize_size)
+         if (IN_RANGE (n_remaining_checks, 1, 3)
+             && optimize >= 2
+             && !optimize_size)
            FOR_EACH_VEC_ELT (*gnu_loop_info->checks, i, rci)
              if (rci->invariant_cond != boolean_false_node)
                {
                  TREE_OPERAND (rci->inserted_cond, 0) = rci->invariant_cond;
 
-                 if (flag_unswitch_loops)
+                 if (optimize >= 3)
                    add_stmt_with_node_force (rci->inserted_cond, gnat_node);
                }
        }
 
       /* Second, if loop vectorization is enabled and the iterations of the
         loop can easily be proved as independent, mark the loop.  */
-      if (optimize
-         && flag_tree_loop_vectorize
+      if (optimize >= 3
          && independent_iterations_p (LOOP_STMT_BODY (gnu_loop_stmt)))
        LOOP_STMT_IVDEP (gnu_loop_stmt) = 1;
 
@@ -5637,7 +5637,7 @@ Raise_Error_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p)
                = build1 (SAVE_EXPR, boolean_type_node, boolean_true_node);
              vec_safe_push (loop->checks, rci);
              gnu_cond = build_noreturn_cond (gnat_to_gnu (gnat_cond));
-             if (flag_unswitch_loops)
+             if (optimize >= 3)
                gnu_cond = build_binary_op (TRUTH_ANDIF_EXPR,
                                            boolean_type_node,
                                            rci->inserted_cond,