SymPas: Symbolic Program Slicing

by   Yingzhou Zhang, et al.

Program slicing is a technique for simplifying programs by focusing on selected aspects of their behaviour. Current mainstream static slicing methods operate on the PDG (program dependence graph) or SDG (system dependence graph), but these friendly graph representations may be expensive and error-prone for some users. We attempt in this paper to study a light-weight approach of static program slicing, called Symbolic Program Slicing (SymPas), which works as a dataflow analysis on LLVM (Low-Level Virtual Machine). In our SymPas approach, slices are stored symbolically rather than procedure being re-analysed (cf. procedure summaries). Instead of re-analysing a procedure multiple times to find its slices for each callling context, SymPas calculates a single symbolic (or parameterized) slice which can be instantiated at call sites avoiding re-analysis; it is implemented in LLVM to perform slicing on its intermediate representation (IR). For comparison, we systematically adapt IFDS (Interprocedural Finite Distributive Subset) analysis and the SDG-based slicing method (SDG-IFDS) to statically IR slice programs. Evaluated on open-source and benchmark programs, our backward SymPas shows a factor-of-6 reduction in time cost and a factor-of-4 reduction in space cost, compared to backward SDG-IFDS, thus being more efficient. In addition, the result shows that after studying slices from 66 programs, ranging up to 336,800 IR instructions in size, SymPas is highly size-scalable.


On the computational complexity of dynamic slicing problems for program schemas

Given a program, a quotient can be obtained from it by deleting zero or ...

Mull it over: mutation testing based on LLVM

This paper describes Mull, an open-source tool for mutation testing base...

Retrofitting Symbolic Holes to LLVM IR

Symbolic holes are one of the fundamental building blocks of solver-aide...

IR2Vec: A Flow Analysis based Scalable Infrastructure for Program Encodings

We propose IR2Vec, a Concise and Scalable encoding infrastructure to rep...

A Static Program Slicing Approach for Output Stream Objects in JEE Applications

In this paper, we propose a program slicing approach for the output stre...

Slice-Aware Neural Ranking

Understanding when and why neural ranking models fail for an IR task via...

Supporting single responsibility through automated extract method refactoring

The responsibility of a method/function is to perform some desired compu...

Please sign up or login with your details

Forgot password? Click here to reset