Patchwork Cgraph alias reorg 13/14 (disable inlining functions called once at -O0

login
register
mail settings
Submitter Jan Hubicka
Date June 10, 2011, 6:42 p.m.
Message ID <20110610184247.GA3252@kam.mff.cuni.cz>
Download mbox | patch
Permalink /patch/99947/
State New
Headers show

Comments

Jan Hubicka - June 10, 2011, 6:42 p.m.
Hi,
by some mistake we enable functions called once at -O0 and it actually happens from
time to time.

Bootstrapped/regtested x86_64-linux, will commit it shortly.

Honza

	* opts.c (default_options): Enlist OPT_finline_functions_called_once.
	* common.opt (flag_inline_functions_called_once):Do not initialize to 1.
Richard Guenther - June 10, 2011, 6:49 p.m.
On Fri, Jun 10, 2011 at 8:42 PM, Jan Hubicka <hubicka@ucw.cz> wrote:
> Hi,
> by some mistake we enable functions called once at -O0 and it actually happens from
> time to time.

Why do it for -O1?  It definitely makes debugging less reliable.  I'd say do it
for -O[23s] only.

Richard.

> Bootstrapped/regtested x86_64-linux, will commit it shortly.
>
> Honza
>
>        * opts.c (default_options): Enlist OPT_finline_functions_called_once.
>        * common.opt (flag_inline_functions_called_once):Do not initialize to 1.
> Index: opts.c
> ===================================================================
> --- opts.c      (revision 174916)
> +++ opts.c      (working copy)
> @@ -486,6 +486,7 @@ static const struct default_options defa
>     /* Inlining of functions reducing size is a good idea with -Os
>        regardless of them being declared inline.  */
>     { OPT_LEVELS_3_PLUS_AND_SIZE, OPT_finline_functions, NULL, 1 },
> +    { OPT_LEVELS_1_PLUS, OPT_finline_functions_called_once, NULL, 1 },
>     { OPT_LEVELS_3_PLUS, OPT_funswitch_loops, NULL, 1 },
>     { OPT_LEVELS_3_PLUS, OPT_fgcse_after_reload, NULL, 1 },
>     { OPT_LEVELS_3_PLUS, OPT_ftree_vectorize, NULL, 1 },
> Index: common.opt
> ===================================================================
> --- common.opt  (revision 174916)
> +++ common.opt  (working copy)
> @@ -1233,7 +1233,7 @@ Common Report Var(flag_inline_functions)
>  Integrate simple functions into their callers
>
>  finline-functions-called-once
> -Common Report Var(flag_inline_functions_called_once) Init(1) Optimization
> +Common Report Var(flag_inline_functions_called_once) Optimization
>  Integrate functions called once into their callers
>
>  finline-limit-
>
Jan Hubicka - June 10, 2011, 7:15 p.m.
> On Fri, Jun 10, 2011 at 8:42 PM, Jan Hubicka <hubicka@ucw.cz> wrote:
> > Hi,
> > by some mistake we enable functions called once at -O0 and it actually happens from
> > time to time.
> 
> Why do it for -O1?  It definitely makes debugging less reliable.  I'd say do it
> for -O[23s] only.

Well, that is what we did before.  I tought -O1 is mostly for optimizations
that are not too expensive and usually win (rahter than about debugability of
the output) and I think this one counts here.  But I don't have very strong
optinions either way.

Honza
Richard Guenther - June 12, 2011, 10:34 a.m.
On Fri, Jun 10, 2011 at 9:15 PM, Jan Hubicka <hubicka@ucw.cz> wrote:
>> On Fri, Jun 10, 2011 at 8:42 PM, Jan Hubicka <hubicka@ucw.cz> wrote:
>> > Hi,
>> > by some mistake we enable functions called once at -O0 and it actually happens from
>> > time to time.
>>
>> Why do it for -O1?  It definitely makes debugging less reliable.  I'd say do it
>> for -O[23s] only.
>
> Well, that is what we did before.  I tought -O1 is mostly for optimizations
> that are not too expensive and usually win (rahter than about debugability of
> the output) and I think this one counts here.  But I don't have very strong
> optinions either way.

I think we also suggested at some point that -O1 optimizations
shouldn't interfere
with debugging too much.  But if it is what we did before it's certainly fine.

Richard.

> Honza
>
Eric Botcazou - June 14, 2011, 3 p.m.
> I think we also suggested at some point that -O1 optimizations
> shouldn't interfere with debugging too much.  But if it is what we did before
> it's certainly fine.

FWIW we have some evidences that -finline-functions-called-once really help 
at -O1 in terms of performances (with the 4.5 back-end) and doesn't damage 
debugging too much.

Patch

Index: opts.c
===================================================================
--- opts.c	(revision 174916)
+++ opts.c	(working copy)
@@ -486,6 +486,7 @@  static const struct default_options defa
     /* Inlining of functions reducing size is a good idea with -Os
        regardless of them being declared inline.  */
     { OPT_LEVELS_3_PLUS_AND_SIZE, OPT_finline_functions, NULL, 1 },
+    { OPT_LEVELS_1_PLUS, OPT_finline_functions_called_once, NULL, 1 },
     { OPT_LEVELS_3_PLUS, OPT_funswitch_loops, NULL, 1 },
     { OPT_LEVELS_3_PLUS, OPT_fgcse_after_reload, NULL, 1 },
     { OPT_LEVELS_3_PLUS, OPT_ftree_vectorize, NULL, 1 },
Index: common.opt
===================================================================
--- common.opt	(revision 174916)
+++ common.opt	(working copy)
@@ -1233,7 +1233,7 @@  Common Report Var(flag_inline_functions)
 Integrate simple functions into their callers
 
 finline-functions-called-once
-Common Report Var(flag_inline_functions_called_once) Init(1) Optimization
+Common Report Var(flag_inline_functions_called_once) Optimization
 Integrate functions called once into their callers
 
 finline-limit-