## Section: New Results

### Proof of polyhedral transformations

Participants : Nicolas Magaud, Julien Narboux, Éric Violard.

We work with two members of the GALLIUM team: Alexandre Pilkiewicz, PhD student, and François Pottier, senior researcher at INRIA. This work aims at integrating the polyhedral transformations into the compiler CompCert.

This integration is based on an *ad hoc* language called LOOPS.
This language, designed by Alexandre Pilkiewicz, is a small abstract language
(without concrete syntax) allowing to express the *affine loop nests*
to which the polyhedral transformations apply.
It is provided with a small-step operational semantics.

We use this language to separate proofs about polyhedral transformations from the actual intermediate languages of the compiler hence some proofs can be developped independently of CompCert.

The integration in CompCert takes place at the level of the intermediate language Csharpminor (cf. fig 3 ): the affine loop nests are first extracted from the intermediate code Csharpminor and translated into LOOPS. Once transformed while preserving their semantics, these loop nests are then translated back into Csharpminor.

We developed an extension of CompCert who extracts affine loop nests and performs the operation of transplantation. This extension is still rudimentary: only a restricted class of affine loop nests is recognized and translated into LOOPS.

We now work to establish the proof in Coq that, if the transformation in LOOPS is correct, then the transformed Csharpminor program has the same behavior as the original one.

We will have to deal with the problem of potential overflows in loop bounds computations. This problem is overlooked in the litterature about polyhedral model. We will have to generate some sufficient conditions to prevent overflow and check at runtime these conditions to guarrantee that the new program has the same behaviour as the original.