- Jan 2015, 26th to 30th.
- ENS Lyon, France.
- For the Computer Science Department students.
- 24 hours of courses in a week !
Static analyses in the state-of-the-art compilers
The goal of this course is to introduce the student to the most recent techniques that compilers use to analyze and optimize programs. The student will learn about dataflow and constraint based program analyses. They will have contact with type systems, and the many variants of inductive techniques to prove properties about programs. The course will detail some of the state-of-the-art techniques published in top conferences in the field of programming languages. I will illustrate the course through real-world examples coming from my experience in developing open source compilers and analyzers. Each topic will be illustrated by exercises and mini-lab sessions.
Prerequesite : Basic understanding of compilation techniques are required, a quick reintroduction to the compilation flow will be done, but will not enter the details of the front-end nor the back-end (see the M1 compilation Course of C. Alias here). Some of the algorithms and methods offer a good application to other courses of the Computer Science Department : graphs algorithms (L3), optimisation (M1), , semantics and program analysis (M1) : here the emphasis will be more on scalability than precision.
The course will not be redundant with the m2 course which mainly focuses on loop optimisation and the specificities of hardware synthesis.
The course will be based on the following material : here
Schedule (V5 27th jan 15) + useful install information
- pdf. Warning, the final exam is now at 3pm on Friday 30th.
- The lab session will be done at ENS Site Monod. People that do not belong to the Computer Science Department will be given a login.
- Here is a useful script (V2 28/1) to set all the shell variables in order to properly use the LLVM distribution inside the lab rooms (E001/125/171)
- If you want to use your personal laptop, please install LLVM before coming (it takes a while to compile!). Follow these instructions.
- Day 1 slides : Introduction, Loop Optimization, Static Single Assignment.
- Day 2 slides
Analyses, Tainted Analyses.
- Lab 1 : a quick llvm tour : intro, lab1 exercises (llvm as user), lab1 files (.c files)
- Lab 2 : Dsls and JIT intro, lab2 exercises , lab2 files : (cpp files + howto compilation).
- Day 3 slides : Range Analysis, Register Allocation, SSA based Register Allocation.
- Day 4 : end of lab2 + Lab3 intro, lab3 exercises (Obfuscation, writing a llvm pass), lab3 examples (countblocks), lab3 files. Tests in LLVM
- Day 5 : Lab4 intro, lab4 exercises(Dominance). Lab5 intro, lab5 exercises(Alias Set), and lab5 files. slides : Just in Time Compilation.
This research school is partially supported by the LABEX MILYON (ANR-10-LABX-0070) of Université de Lyon, within the program "Investissements d'Avenir" (ANR-11-IDEX-0007) operated by the French National Research Agency (ANR).