Closed
Description
https://go.dev/cl/492436 implements the bare minimum of a PGO devirtualization implementation. There are still numerous limitations that we would like address shortly:
- Callees not directly referenced in the current package can be missed (even if they are in the transitive dependences). https://go.dev/cl/497175
- Only interface method calls are supported, not other indirect function calls.
- Callees that only partially implement an interface (they are embedded in another type that completes the interface) cannot be devirtualized. -> cmd/compile: PGO devirtualization of partial interface implementations #64673
- Closures cannot be inlined -> cmd/compile: PGO devirtualization of closures #64675
- Callees may be missing from export data -> cmd/compile: include PGO devirtualization targets in export data #64676