From Low-Level Pointers to High-Level Containers
Abstract
We propose a method that transforms a C program manipulating containers using low-level pointer statements into an equivalent program where the containers are manipulated via calls of standard high-level container operations like push_back or pop_front. The input of our method is a C program annotated by a special form of shape invariants which can be obtained from current automatic shape analysers after a slight modification. The resulting program where the low-level pointer statements are summarized into high-level container operations is more understandable and (among other possible benefits) better suitable for program analysis. We have implemented our approach and successfully tested it through a number of experiments with list-based containers, including experiments with simplification of program analysis by separating shape analysis from analysing data-related properties.
Cite
@article{arxiv.1510.07995,
title = {From Low-Level Pointers to High-Level Containers},
author = {Kamil Dudka and Lukáš Holík and Petr Peringer and Marek Trtík and Tomáš Vojnar},
journal= {arXiv preprint arXiv:1510.07995},
year = {2015}
}
Comments
An extended version of a VMCAI'16 paper