minglotus-6 wrote:

> The invoke instruction can have 3 different kinds of prof data
> 
> 1. call count (if a direct call)
> 2. VP profile data (if an indirect call)
> 3. branch weights for landing pad.
> 4. can coexist with  2) and does not need to be updated.

thanks for the list. I get the point that 1 and 2 are mutually exclusive. For 
my understanding, which one out of {1, 2, 3} doesn't need to be updated?

>  Is there an existing test coverage for type 1) update?

Searching under `Transforms/Inline` directory, 
[inline-hot-callsite.ll](https://github.com/llvm/llvm-project/blob/4a4fb930a539c91eb4e9d8b1ea427a7cef72d054/llvm/test/Transforms/Inline/inline-hot-callsite.ll#L61)
 is an existing test with `!prof` annotated `invoke`, but the type is 3 (branch 
weights) not 1 (call count). 

Meanwhile, non-call instructions could have branch weights (notably 
`SwitchInst` and `IndirectBrInst`), and https://gcc.godbolt.org/z/8jjjPEcao 
shows '!prof' for 'switch' isn't updated after inline. I'll probably add the 
'switch' test case together with the `callbr` [test case 
](https://gcc.godbolt.org/z/b36P8o3K1).

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

Reply via email to