Slicing unconditional jumps with unnecessary control dependencies

[EN] Program slicing is an analysis technique that has a wide range of applications, ranging from compilers to clone detection software, and that has been applied to practically all programming languages. Most program slicing techniques are based on a widely extended program representation, the Syst...

Descripción completa

Detalles Bibliográficos
Autores: Galindo, Carlos|||0000-0002-3569-6218, Silva, Josep|||0000-0001-5096-0008, Pérez-Rubio, Sergio
Tipo de recurso: artículo
Fecha de publicación:2021
País:España
Institución:Universitat Politècnica de València (UPV)
Repositorio:RiuNet. Repositorio Institucional de la Universitat Politécnica de Valéncia
Idioma:inglés
OAI Identifier:oai:riunet.upv.es:10251/181801
Acceso en línea:https://riunet.upv.es/handle/10251/181801
Access Level:acceso abierto
Palabra clave:Program analysis
Program slicing
Unconditional jumps
LENGUAJES Y SISTEMAS INFORMATICOS
QUIMICA ORGANICA
Descripción
Sumario:[EN] Program slicing is an analysis technique that has a wide range of applications, ranging from compilers to clone detection software, and that has been applied to practically all programming languages. Most program slicing techniques are based on a widely extended program representation, the System Dependence Graph (SDG). However, in the presence of unconditional jumps, there exist some situations where most SDG-based slicing techniques are not as accurate as possible, including more code than strictly necessary. In this paper, we identify one of these scenarios, pointing out the cause of the inaccuracy, and describing the initial solution to the problem proposed in the literature, together with an extension, which solves the problem completely. These solutions modify both the SDG generation and the slicing algorithm. Additionally, we propose an alternative solution, that solves the problem by modifying only the SDG generation, leaving the slicing algorithm untouched.