Loading…
This event has ended. View the official site or create your own event → Check it out
This event has ended. Create your own
View analytic
Friday, March 18 • 08:30 - 09:30
SVF: Static Value-Flow Analysis in LLVM

Sign up or log in to save this to your schedule and see who's attending!

This talk presents SVF, a research tool that enables scalable and precise interprocedural Static Value-Flow analysis for sequential and multithreaded C programs by leveraging recent advances in sparse analysis. SVF, which is fully implemented in LLVM (version 3.7.0) with over 50 KLOC core C++ code, allows value-flow construction and pointer analysis to be performed in an iterative manner, thereby providing increasingly improved precision for both. SVF accepts points-to information generated by any pointer analysis (e.g., Andersen's analysis) and constructs an interprocedural memory SSA form, in which the def-use chains of both top-level and address-taken variables are captured. Such value-flows can be subsequently exploited to support various forms of program analysis or enable more precise pointer analysis (e.g., flow-sensitive analysis) to be performed sparsely. SVF provides an extensible interface for users to write their own analysis easily. SVF is publicly available at http://unsw-corg.github.io/SVF.

We first describe the design and internal workings of SVF, based on a years-long effort in developing the state-of-the-art algorithms of precise pointer analysis, memory SSA construction and value-flow analysis for C programs. Then, we describe the implementation details with code examples in the form of LLVM IR. Next, we discuss some usage scenarios and our previous experiences in using SVF in several client applications including detecting software bugs (e.g., memory leaks, data races), and accelerating dynamic program analyses (e.g., MSAN, TSAN). Finally, our future work and some open discussions.

Note: this presentation will be shared with CC.


Speakers

Friday March 18, 2016 08:30 - 09:30
Tarragona+Girona

Attendees (22)