SVF is a static tool that enables scalable and precise interprocedural dependence analysis for C programs. SVF allows value-flow construction and pointer analysis to be performed iteratively, thereby providing increasingly improved precision for both.
SVF accepts the points-to information generated by any pointer analysis (e.g., Andersen’s analysis) and constructs an interprocedural memory SSA form so that the def-use chains of both top-level and address-taken variables are captured. SVF is implemented on top of an industry-strength compiler LLVM (version 3.8.0). SVF contains a third party software package CUDD-2.5.0 (Binary Decision Diagrams (BDDs)), which is used to encode path conditions.
| 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 | Detailed technical documentation and how to write your own analyses on top of SVF |
If you use SVF, you are asked to acknolwedge usage of our tool by citing some of our publications listed in the [homepage](http://unsw-corg.github.io/SVF/), especially the following two papers:
Yulei Sui and Jingling Xue. SVF: Interprocedural Static Value-Flow Analysis in LLVM Compiler Construction (CC '16)
Yulei Sui, Ding Ye, and Jingling Xue. Detecting Memory Leaks Statically with Full-Sparse Value-Flow Analysis , IEEE Transactions on Software Engineering (TSE'14)



