"Lazy" Code Transformations in a Formally Verified Compiler - Archive ouverte HAL
Pré-Publication, Document De Travail Année : 2023

"Lazy" Code Transformations in a Formally Verified Compiler

Léo Gourdin

Résumé

Translation validation verifies the results of an untrusted translator---called an oracle---at the compiler's runtime using a validator. This approach enables validating intricate optimizations without directly having to prove them correct. Parametrizing such a validator with hints provided by oracles greatly simplifies its integration within a formally verified compiler---such as CompCert. However, generating those hints requires adapting state-of-the-art optimizations. The co-design of a validation framework supporting a class of optimizations led us to improve the Lazy Code Motion (LCM) and Lazy Strength Reduction (LSR) data-flow algorithms of Knoop, Rüthing, and Steffen. We propose an efficient implementation in OCaml combining both LCM and LSR, operating over basic-blocks, and whose result is checked by a Coq-verified validator. We show how to generate invariant annotations from the data-flow equations as hints for the defensive validation, and we introduce several algorithmic refinements w.r.t. the original papers. Our solution is fully integrated within CompCert, and is, as far as we know, the first formally verified strength-reduction of loop-induction variables.
Fichier principal
Vignette du fichier
preprint (1).pdf (795.04 Ko) Télécharger le fichier
Origine Fichiers produits par l'(les) auteur(s)
Licence
Copyright (Tous droits réservés)

Dates et versions

hal-04108775 , version 1 (30-05-2023)
hal-04108775 , version 2 (26-06-2023)
hal-04108775 , version 3 (10-07-2023)
hal-04108775 , version 4 (23-01-2024)

Licence

Copyright (Tous droits réservés)

Identifiants

  • HAL Id : hal-04108775 , version 1

Citer

Léo Gourdin. "Lazy" Code Transformations in a Formally Verified Compiler. 2023. ⟨hal-04108775v1⟩
293 Consultations
229 Téléchargements

Partager

More