[LLVMdev] Finding Targets of a Function Pointer
Luke Dalessandro
luked at cs.rochester.edu
Tue Jul 14 12:47:53 PDT 2009
Patrick Alexander Simmons wrote:
> Hi all,
>
> I was wondering whether there's any existing code to find all possible
> targets of a function pointer in LLVM, and, if not, if there were a
> smarter way to go about writing something to accomplish this than the
> obvious way of recursively following the def-use chains and creating an
> aggregate set.
I think the only way to do this is to use an alias analysis to create
points-to sets. You can then run the analysis and ask it for may-alias
results between function pointers at call sites, and the set of
functions that you have available. Clearly you can have trouble if there
are functions that aren't currently available.
You should probably look at the DSA stuff in poolalloc as I think that
it does some of this, or at least contains infrastructure to do some of
this.
One of the main reasons to want to do this is for member function call
devirtualization. Unfortunately, the code generated by llvm-g++ isn't
great for this task, since it erases all of the types in a vtable. If
this is what you are doing then you are likely to run into trouble in
moderate sized programs.
Luke
>
> --Patrick
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list