[llvm-dev] CallSiteBase::getCalledFunction and non-trivial calls (original) (raw)

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