About
- 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
: Sparse
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).