28605 articles – 22093 references  [version française]

inria-00477689, version 1

Formal Verification of Coalescing Graph-Coloring Register Allocation

Sandrine Blazy () a1, Benoît Robillard () 2, Andrew W. W. Appel b3

19th European Symposium on Programming (ESOP) 6012 (2010) 145-164

Abstract: Iterated Register Coalescing (IRC) is a widely used heuristic for performing register allocation via graph coloring. Many implementations in existing compilers follow (more or less faithfully) the imperative algorithm published in 1996. Several mistakes have been found in some of these implementations. In this paper, we present a formal verification (in Coq) of the whole IRC algorithm. We detail a specification that can be used as a reference for IRC. We also define the theory of register-interference graphs; we implement a purely functional version of the IRC algorithm, and we prove the total correctness of our implementation. The automatic extraction of our IRC algorithm into Caml yields a program with competitive performance. This work has been integrated into the CompCert verified compiler.

  • a –  Université de Rennes 1
  • b –  Princeton University
  • 1:  CELTIQUE (INRIA - IRISA)
  • INRIA – Université de Rennes 1 – École normale supérieure de Cachan - ENS Cachan – CNRS : UMR6074
  • 2:  Centre d'Etude et De Recherche en Informatique du Cnam (CEDRIC)
  • Conservatoire National des Arts et Métiers (CNAM)
  • 3:  Department of Computer Science
  • Princeton University
  • Domain : Computer Science/Programming Languages
 
  • inria-00477689, version 1
  • oai:hal.inria.fr:inria-00477689
  • From: 
  • Submitted on: Thursday, 29 April 2010 20:59:50
  • Updated on: Monday, 3 May 2010 09:24:23