[llvm-dev] Finding callees of a function
Tim Northover via llvm-dev
llvm-dev at lists.llvm.org
Wed Jan 15 01:58:00 PST 2020
Hi Marc,
On Wed, 15 Jan 2020 at 09:52, Marc via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> bool Foo:runOnModule(Module &M) {
> LLVMContext &C = M.getContext();
> for (auto &F : M) {
> // magic here
>
> if I want to know from which function (callee) each function is called -
> how can I do this?
To get the direct callers you would iterate through the users of F,
and check whether it's being used as the callee operand in a CallInst
or InvokeInst. Fortunately there's a CallSite class that abstracts
away many of the differences. So something like:
for (auto &U : F.getUsers()) {
if (auto CS = CallSite(U)) {
if (CS->getCalledFunction() == F)
doStuff(CS);
}
}
> I am aware that this will not work for calls that are made outside of
> the analyzed module.
Also indirect calls.
Cheers.
Tim.
More information about the llvm-dev
mailing list