[llvm-dev] Propagating llvm.assume across function calls to enhance de-virtualization

Geoff Berry via llvm-dev llvm-dev at lists.llvm.org
Thu Nov 12 14:24:55 PST 2015

Hi All,


I have a two-part de-virtualization enhancement that I'm considering working
on and am looking for any feedback on how feasible it is.  The two parts


1.       llvm: Extending inter-procedural SCCP (or some other IPO module
pass) to propagate llvm.assume's across function calls.  The basic idea
would be to collect the set of assumptions for each argument at each call
sight and compute the intersection across all call sites, then duplicate the
intersection assumption computations in the callee.  The reason I'm starting
with SCCP is that it already deals with keeping track of computing when all
of a function's possible call sites are known, as well as merging values in
a lattice.

2.       clang: Emitting llvm.assume vtable load sequences for each global
variable with virtual functions referenced inside a function.  This is
similar to what is currently done for local variables and would produce more
vtable load assumptions to be propagated by (1).


Related to (2), does anyone know what the status is of enabling clang's
-fstrict-vtable-pointers by default?  Are there known issues with this code
that would need to be resolved as well?






Geoff Berry

Employee of Qualcomm Innovation Center, Inc.

Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux
Foundation Collaborative Project


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151112/1c5cc139/attachment.html>

More information about the llvm-dev mailing list