Abstract Title

Conditional Data-Flow Analysis Framework

Abstract

Data-flow program analysis (DFA) is a powerful technique with applications ranging from compiler optimization to program verification. In order to provide sound results the DFA frameworks are designed to consider the entire control flow graph (CFG) of a program. However, some applications might need only a part of the CFG to be analyzed, or to increase efficiency execute DFAs simultaneously on different partitions of the CFG. While possible, guiding a DFA framework to explore a CFG partition still requires some computations on the rest of the CFG. Our work addresses this problem by formalizing, implementing and evaluating a conditional data-flow analysis (CDFA) framework that enables DFA on the CFG partitions. We implemented a CDFA framework in the Soot compiler optimization framework for Java programs. We have tested our framework on eight methods from real-world programs using a reaching definitions analysis and found that our CDFA is on average 25% faster than the full DFA. Furthermore, the guided DFA is slower than the full DFA on all benchmark programs.

This document is currently not available here.

Share

COinS
 

Conditional Data-Flow Analysis Framework

Data-flow program analysis (DFA) is a powerful technique with applications ranging from compiler optimization to program verification. In order to provide sound results the DFA frameworks are designed to consider the entire control flow graph (CFG) of a program. However, some applications might need only a part of the CFG to be analyzed, or to increase efficiency execute DFAs simultaneously on different partitions of the CFG. While possible, guiding a DFA framework to explore a CFG partition still requires some computations on the rest of the CFG. Our work addresses this problem by formalizing, implementing and evaluating a conditional data-flow analysis (CDFA) framework that enables DFA on the CFG partitions. We implemented a CDFA framework in the Soot compiler optimization framework for Java programs. We have tested our framework on eight methods from real-world programs using a reaching definitions analysis and found that our CDFA is on average 25% faster than the full DFA. Furthermore, the guided DFA is slower than the full DFA on all benchmark programs.