On Thu, Dec 5, 2019 at 1:41 PM Martin Liška <[email protected]> wrote:
>
> On 12/5/19 1:30 PM, Richard Biener wrote:
> > I wonder if the behavior shouldn't be the default? The only thing we lose
> > is failing to notice really cold calls (error paths) in programs?
>
> I would also consider enabling that by default.
So I'd add the "reverse" option -fconsider-unprofiled-functions-cold or
so. Your proposed change makes functions not executed during profiling
behave as if the function were built without -fprofile-generate for training
but with -fprofile-use later? Documentation should somehow relate
behavior to that.
Richard.
> I'm sending a language correction for the option documentation:
>
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index 26a444ac7b2..130529dece1 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -10637,10 +10637,10 @@ This option is enabled by @option{-fauto-profile}.
> @item -fprofile-partial-training
> @opindex fprofile-use
> With @code{-fprofile-use} all portions of programs not executed during train
> -run are optimized agressively for size rather than speed. In some cases it
> is not
> +run are optimized aggressively for size rather than speed. In some cases it
> is not
> practical to train all possible paths hot paths in the program. (For example
> -program may contain functions specific for a given hardware and trianing may
> -not cover all hardware configurations program is run on.) With
> +a program may contain functions specific for a given hardware and training
> may
> +not cover all hardware configurations program can run on). With
> @code{-fprofile-partial-training} profile feedback will be ignored for all
> functions not executed during the train run leading them to be optimized as
> if they were compiled without profile feedback.
>
> Martin