[llvm-dev] CallSiteBase::getCalledFunction and non-trivial calls
via llvm-dev
llvm-dev at lists.llvm.org
Wed Sep 12 11:51:43 PDT 2018
How does LLVM define "indirect call"? The documentation of
CallSiteBase::getCalledFunction claims it returns null for indirect
calls, but in practice it seems to return null for "non-trivial" calls.
For example, it returns null for a direct call to a bitcast'ed function:
%0 = call void bitcast (void (%struct.foo *)* @func to void (%struct.bar
*)*)(%struct.bar *qux)
By some definition "direct" could mean "trivial", but here it seems
ambiguous at best.
I was able to find some discussion of this previously at
http://lists.llvm.org/pipermail/llvm-dev/2015-November/092396.html but
it feels like the docs/implementation of some of the functions in
CallSiteBase (isIndirectCall also does not seem quite correct, and is
not used in a couple places it could be) should just be updated to
reflect this.
Is my assessment reasonable? I can update these functions, but it will
require updating uses throughout the codebase so I wanted to ask if this
makes any sense before starting the work.
Regards,
Scott
More information about the llvm-dev
mailing list