Improvements to graph coloring register allocation
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Translation validation for an optimizing compiler
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Optimal spilling for CISC machines with few registers
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Modern Compiler Implementation: In ML
Modern Compiler Implementation: In ML
TACAS '98 Proceedings of the 4th International Conference on Tools and Algorithms for Construction and Analysis of Systems
A Formal Theory of Undirected Graphs in Higher-Order Logic
Proceedings of the 7th International Workshop on Higher Order Logic Theorem Proving and Its Applications
Formalization of Planar Graphs
Proceedings of the 8th International Workshop on Higher Order Logic Theorem Proving and Its Applications
Formalization of Graph Search Algorithms and Its Applications
Proceedings of the 11th International Conference on Theorem Proving in Higher Order Logics
The 5 Colour Theorem in Isabelle/Isar
TPHOLs '02 Proceedings of the 15th International Conference on Theorem Proving in Higher Order Logics
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
Formal certification of a compiler back-end or: programming a compiler with a proof assistant
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Copy coalescing by graph recoloring
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Formal derivation of spanning trees algorithms
ZB'03 Proceedings of the 3rd international conference on Formal specification and development in Z and B
Proof pearl: Dijkstra's shortest path algorithm verified with ACL2
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
Formal verification of a c compiler front-end
FM'06 Proceedings of the 14th international conference on Formal Methods
Formalizing the LLVM intermediate representation for verified program transformations
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Validating register allocation and spilling
CC'10/ETAPS'10 Proceedings of the 19th joint European conference on Theory and Practice of Software, international conference on Compiler Construction
Hi-index | 0.00 |
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.