david-xl wrote:

> > > > I don't understand, if you're saying the profile is accurate, then 
> > > > those functions are actually cold, so we should be able to mark them as 
> > > > optsize?
> > > 
> > > 
> > > Accurate is not black or white. The current heuristic requires certain 
> > > level of accuracy to be effective. If you make the heuristics more 
> > > aggressive (like what this patch is doing), you're raising the 
> > > requirement of what can be considered accurate, and profile not meeting 
> > > that new requirement could see regression with new heuristic.
> > > Whether a function is cold or not also depends on what is the calling 
> > > context and how inlining is done. All that makes function level 
> > > annotation inherently inaccurate when done before inlining. Not that we 
> > > shouldn't try it, but it's not as clear cut as it appears to be, and we 
> > > need to be careful.
> > 
> > 
> > It will be more conservative (pre-inlining), so won't cause additional 
> > optimization suppression compared with the current PGSO.
> 
> Sample PGO profile has inline context, so in the profile, we may have `foo` 
> as cold and `bar->foo` as hot, but if later inliner rejects `bar->foo` 
> inlining, `foo` can be hot. So marking `foo` as cold pre-inline can still be 
> inaccurate (and not conservative).
> 
> In this PR, you have `PGOColdFuncAttr` default to `ColdFuncOpt::Default`. As 
> long as you keep it that way, this PR is fine for sample pgo (it's no-op 
> unless `pgo-cold-func-opt` is used explicitly).

Good example. This pass should be run post-inline.  @aeubanks, any reason we 
want to run it early in the pipeline?

https://github.com/llvm/llvm-project/pull/69030
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to