https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88971

--- Comment #8 from rguenther at suse dot de <rguenther at suse dot de> ---
On Tue, 22 Jan 2019, maratrus at mail dot ru wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88971
> 
> --- Comment #7 from Marat Stanichenko <maratrus at mail dot ru> ---
> (In reply to rguent...@suse.de from comment #6)
> > > Do you believe that compiler can do better in such situations? Or the 
> > > current
> > > behaviour is perfectly valid and no improvements are really needed?
> > 
> > The compiler can of course do better when estimating the benefit of
> > inlining.  It's just not entirely clear if it is reasonably easy to
> > do so ... [let aside the -finline-function issue]
> 
> Is it only about inlining?
> 
> Unfortunately, I cannot evaluate the technical difficulties but in patterns
> like presented here i.e.
> 
> ```
> if (condition)
>   Function(param);
> ```
> 
> irrespective of the fact whether `Function()` is asked to be inlined or not
> there are at least two observations that the compiler may notice before taking
> an optimization decision:
> 
> a) Whether `Function(param)` is empty or not. In both scenarios in the example
> presented `PrintBad<false>("<", ">", t)` and `PrintGood<false>("<", t)` are
> actually empty.
> 
> b) Whether `param` is used in a `Function`. I think I can see the examples 
> when
> function calls like `PrintBad<false>(">", t)` generates a code to construct
> parameter ">" despite the fact that not only it is not used but also the
> function body is empty.
> 
> Of course, ideally I expect the parameter not to be constructed if it is not
> used and the whole branch to be eliminated of the `Function` is empty and
> `condition` does not have side effects. But as I said, I do not have enough
> technical expertise to evaluate the cost. I speak from a solely user's
> perspective.
> 
> What do you think is the best way to solve this? Keep tracking examples until
> some critical mass is collected?

Well, it's more until any bright idea pops up how to solve this
abstraction issue...

Reply via email to