SVF provides reusable abstractions, graphs, and solvers for analyzing LLVM IR.
- MSli, an on-demand program slicing tool for multithreaded programs, is now available in SVF/MTA.
- SVF now supports LLVM-22 (Contributed by Giorgio).
- SVF now supports LLVM-21 (Contributed by cjsrxzdyzds).
- SVF now supports new build system (Thank Johannes for his help!).
- SVF-Python is now available, enabling developers to write static analyzers in Python by leveraging the SVF library (Contributed by Jiawei Wang).
- New course Software Security Analysis for learning code analysis and verification with SVF for fun and expertise!
- SVF now supports LLVM-16.0.0 with opaque pointers (Contributed by Xiao Cheng).
- Modernize SVF's CMake (Contributed by Johannes).
Older news
- SVF now supports LLVM-13.0.0 (Thank Shengjie Xu for his help!).
- Object clustering published in our OOPSLA paper is now available in SVF
- Hash-Consed Points-To Sets published in our SAS paper is now available in SVF
- Learning or teaching Software Analysis? Check out SVF-Teaching!
- SVF now supports LLVM-12.0.0 (Thank Xiyu Yang for her help!).
- VSFS published in our CGO paper is now available in SVF
- TypeClone published in our ECOOP paper is now available in SVF
- SVF now uses a single script for its build. Just type
source ./build.shin your terminal, that's it! - SVF now supports LLVM-10.0.0!
- We thank bsauce for writing a user manual of SVF (link1 and link2) in Chinese
- SVF now supports LLVM-9.0.0 (Thank Byoungyoung Lee for his help!).
- SVF now supports a set of field-sensitive pointer analyses.
- Use SVF as an external lib for your own project (Contributed by Hongxu Chen).
- SVF now supports LLVM-7.0.0.
- SVF now supports Docker. Try SVF in Docker!
- SVF now supports LLVM-6.0.0 (Contributed by Jack Anthony).
- SVF now supports LLVM-4.0.0 (Contributed by Jared Carlson. Thank Jared and Will for their in-depth discussions about updating SVF!)
- SVF now supports analysis for C++ programs.
| About SVF | Setup Guide | User Guide | Developer Guide |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Introducing SVF -- what it does and how we design it | A step by step setup guide to build SVF | Command-line options to run SVF, get analysis outputs, and test SVF with an example or PTABen | Detailed technical documentation and how to write your own analyses in SVF or use SVF as a lib for your tool, and the course on SVF |
SVF's doxygen document is available here.
SVF (CC'16) is able to perform
- AE (abstract execution): cross-domain execution (ICSE'24), selective widening (OOPSLA'25), recursion analysis (ECOOP'25), typestate analysis (FSE'24);
- WPA (whole program analysis): field-sensitive (SAS'19), flow-sensitive (CGO'21, OOPSLA'21) analysis;
- DDA (demand-driven analysis): flow-sensitive, context-sensitive points-to analysis (FSE'16, TSE'18);
- MSSA (memory SSA form construction): memory regions, side-effects, SSA form (JSS'18);
- SABER (memory error checking): memory leaks and double-frees (ISSTA'12, TSE'14, ICSE'18);
- MTA (analysis of multithreaded programs): value-flows for multithreaded programs (CGO'16), on-demand program slicing (ISSTA'26);
- CFL (context-free-reachability analysis): standard CFL solver, graph and grammar (OOPSLA'22, PLDI'23);
- SVFIR and MemoryModel (SVFIR): SVFIR, memory abstraction and points-to data structure (SAS'21);
- Graphs: generating a variety of graphs, including call graph, ICFG, class hierarchy graph, constraint graph, value-flow graph for static analyses and code embedding (OOPSLA'20, TOSEM'21)
We release the SVF source code with the hope of benefiting the open-source community. If you find SVF helpful, please kindly acknowledge the use of the tool or the relevant publications above.





