Combining Range and Inequality Information for Pointer Disambiguation

Abstract : Pentagons is an abstract domain invented by Logozzo and Fähndrich to validate array accesses in low-level programming languages. This algebraic structure provides a cheap “less-than check”, which builds a partial order between the integer variables used in a program. In this paper, we show how we have used the ideas available in Pentagons to design and implement a novel alias analysis. With this new algorithm, we are able to disambiguate pointers with off- sets, that commonly occur in C programs, in a precise and efficient way. Together with this new abstract domain we describe several implementation decisions that let us produce a practical pointer disambiguation algorithm on top of the LLVM compiler. Our alias analysis is able to handle programs as large as SPEC CPU2006’s gcc in a few minutes. Furthermore, it improves on LLVM’s industrial quality analyses. As an extreme example, we have observed a 4x improvement when analyzing SPEC’s lbm.
Type de document :
Article dans une revue
Science of Computer Programming, Elsevier, 2017
Liste complète des métadonnées

Littérature citée [43 références]  Voir  Masquer  Télécharger

https://hal.archives-ouvertes.fr/hal-01625402
Contributeur : Laure Gonnord <>
Soumis le : vendredi 27 octobre 2017 - 15:11:48
Dernière modification le : vendredi 20 avril 2018 - 15:44:27
Document(s) archivé(s) le : dimanche 28 janvier 2018 - 15:00:29

Fichier

scp17_pointers_hal_authorversi...
Fichiers produits par l'(les) auteur(s)

Identifiants

  • HAL Id : hal-01625402, version 1

Collections

Citation

Maroua Maalej, Vitor Paisante, Fernando Magno Quintao Pereira, Laure Gonnord. Combining Range and Inequality Information for Pointer Disambiguation. Science of Computer Programming, Elsevier, 2017. 〈hal-01625402〉

Partager

Métriques

Consultations de la notice

293

Téléchargements de fichiers

90