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...

ver descrição completa

Detalhes bibliográficos
Autores: Galindo, Carlos|||0000-0002-3569-6218, Silva, Josep|||0000-0001-5096-0008, Pérez-Rubio, Sergio
Tipo de documento: artigo
Data de publicação:2021
País:España
Recursos:Universitat Politècnica de València (UPV)
Repositório:RiuNet. Repositorio Institucional de la Universitat Politécnica de Valéncia
Idioma:inglês
OAI Identifier:oai:riunet.upv.es:10251/181801
Acesso em linha:https://riunet.upv.es/handle/10251/181801
Access Level:Acceso aberto
Palavra-chave:Program analysis
Program slicing
Unconditional jumps
LENGUAJES Y SISTEMAS INFORMATICOS
QUIMICA ORGANICA
Descrição
Resumo:[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.