WenleiHe 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). 

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