Initial stubs for lazy Andersen alias analysis.
Stubs for a LazyAndersen pass to do the work.
Initial graph construction code. (Not yet handling PHI instructions or low-level instructions.)
Release memory properly at shutdown.
Initial graph visualization code.
Finish graph visualization.
Handle PHI nodes.
Reduce the amount of templated code in visitCallOrInvokeInst.
First pass at data structures for lazy analysis.
Add some helper code, clean up casting.
Define all methods out-of-line to reduce constraints on class declaration order.
Minor improvement to Analyze class's encapsulation.
Stubs for analysis algorithms and initial code for the points-to set algorithm.
Use normal pointers for RecursiveAnalysisStep so that we won't have to greedily break reference cycles.
Split up LazyAndersen.cpp into separate files. The -inl.h files are for the inline methods or template methods of classes where additional header dependencies are required. Using a separate header for such methods avoids circular dependencies.
Some cleanup: - Change AnalysisAlgorithm and traits classes to return the result rather than taking it as an argument, and templatize the result type for consistency. - Include -inl file of base type in -inl file of subtype where public inheritance is used to ensure that including the -inl file of a type is sufficient to call any of its publicly accessible methods. (Except for the relation types, where no one cares about calling their inherited methods.)
Change AnalysisStep to AnalysisResultEntry and redesign it to be a polymorphic type to allow exposing recursive AnalysisResults. Eliminate Result return value. Instead we will iterate through the list running pending work and keep an iterator to the previous element.
Implement ReversePointsToAlgorithm.
Simplify algorithm groups to avoid the extra step of binding ids to types. Remove use of typeof since LLVM does not rely on GNUisms. Update CMakeLists.txt.
Simplify IntrusiveListTraits at the expense of one superfluous pointer field.