From: ebotcazou Date: Mon, 23 Sep 2019 08:31:52 +0000 (+0000) Subject: * gcc-interface/trans.c (Regular_Loop_to_gnu): Do not rotate the loop X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1a3c591a6c891f5ce3711a2fbb64cdc2cb107010;p=thirdparty%2Fgcc.git * gcc-interface/trans.c (Regular_Loop_to_gnu): Do not rotate the loop if -Og is enabled. (build_return_expr): Do not perform NRV if -Og is enabled. (Subprogram_Body_to_gnu): Likewise. (gnat_to_gnu) : Likewise. (Handled_Sequence_Of_Statements_to_gnu): Do not inline finalizers if -Og is enabled. * gcc-interface/utils.c (convert_to_index_type): Return early if -Og is enabled. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@276047 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 898ae383a01f..c0bc883c20ac 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,15 @@ +2019-09-23 Eric Botcazou + + * gcc-interface/trans.c (Regular_Loop_to_gnu): Do not rotate the loop + if -Og is enabled. + (build_return_expr): Do not perform NRV if -Og is enabled. + (Subprogram_Body_to_gnu): Likewise. + (gnat_to_gnu) : Likewise. + (Handled_Sequence_Of_Statements_to_gnu): Do not inline finalizers if + -Og is enabled. + * gcc-interface/utils.c (convert_to_index_type): Return early if -Og + is enabled. + 2019-09-23 Eric Botcazou * gcc-interface/trans.c (gnat_compile_time_expr_list): New variable. diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index d9cd84df31f4..7b842d40f7e9 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -3653,7 +3653,7 @@ Regular_Loop_to_gnu (Node_Id gnat_node, tree *gnu_cond_expr_p) which works in all cases. */ - if (optimize) + if (optimize && !optimize_debug) { /* We can use the do-while form directly if GNU_FIRST-1 doesn't overflow. */ @@ -4436,6 +4436,7 @@ build_return_expr (tree ret_obj, tree ret_val) a candidate for Named Return Value. If so, record it. Otherwise, if this is an expression of some kind, record it elsewhere. */ if (optimize + && !optimize_debug && AGGREGATE_TYPE_P (operation_type) && !TYPE_IS_FAT_POINTER_P (operation_type) && TYPE_MODE (operation_type) == BLKmode @@ -4773,7 +4774,7 @@ Subprogram_Body_to_gnu (Node_Id gnat_node) /* If the function returns an aggregate type and we have candidates for a Named Return Value, finalize the optimization. */ - if (optimize && gnu_subprog_language->named_ret_val) + if (optimize && !optimize_debug && gnu_subprog_language->named_ret_val) { finalize_nrv (gnu_subprog_decl, gnu_subprog_language->named_ret_val, @@ -5893,7 +5894,7 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node) /* When not optimizing, disable inlining of finalizers as this can create a more complex CFG in the parent function. */ - if (!optimize) + if (!optimize || optimize_debug) DECL_DECLARED_INLINE_P (proc_decl) = 0; /* If there is no end label attached, we use the location of the At_End @@ -8050,7 +8051,9 @@ gnat_to_gnu (Node_Id gnat_node) /* And find out whether this is a candidate for Named Return Value. If so, record it. */ - if (!TYPE_CI_CO_LIST (gnu_subprog_type) && optimize) + if (optimize + && !optimize_debug + && !TYPE_CI_CO_LIST (gnu_subprog_type)) { tree ret_val = gnu_ret_val; diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c index 8a38b3474b33..b9d5af771e80 100644 --- a/gcc/ada/gcc-interface/utils.c +++ b/gcc/ada/gcc-interface/utils.c @@ -5023,7 +5023,7 @@ convert_to_index_type (tree expr) /* If the type is unsigned, overflow is allowed so we cannot be sure that EXPR doesn't overflow. Keep it simple if optimization is disabled. */ - if (TYPE_UNSIGNED (type) || !optimize) + if (TYPE_UNSIGNED (type) || !optimize || optimize_debug) return convert (sizetype, expr); switch (code)