From: Eric Botcazou Date: Fri, 8 Feb 2019 11:08:07 +0000 (+0000) Subject: trans.c (Regular_Loop_to_gnu): Replace tests on individual flag_unswitch_loops and... X-Git-Tag: releases/gcc-7.5.0~602 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=14e88f9f2bf055640f04dd14a8bff201d1346dec;p=thirdparty%2Fgcc.git trans.c (Regular_Loop_to_gnu): Replace tests on individual flag_unswitch_loops and flag_tree_loop_vectorize... * 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 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 7664aff2800c..8e485add04fc 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,10 @@ +2019-02-08 Eric Botcazou + + * 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 * s-linux-sparc.ads (ETIMEDOUT): Set to correct value. diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index c2c385d70308..7430af10e83f 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -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,