This is a follow up to my talk at the LLVMDev'18 meeting:
https://llvm.org/devmtg/2018-10/talk-abstracts.html#talk20
tl;dr
We want to introduce the notation of a transitive and abstract call
sites into LLVM in order to improve IPO in the presence of function
pointers passed to (runtime) functions. A description, examples, and the
implementation can be found here [0].
We also want Clang to emit !callback metadata for library functions with
known callback behavior (pthread_create, qsort_r, __kmpc_fork_call,
__kmpc_fork_teams for now), as well as for manually annotated functions
that carry the "callback" attribute. Our implementation can be found
here [1].