|Speaker||Prof. Dr. Helmut Seidl|
|Date||Wednesdays & Thursdays 10:00 - 12:00|
The lecture is meant for students doing Master studies who are interested in compiler technology.
Programs which we write should be both efficient and easily to maintain. In particular, maintainability means that programs should be well-structured and easily understandable also by humans. Being well-structured and easily readable, though, may often come at the price oft a degradation in efficiency at run-time.
For this reason, most compilers offer an optimization phase in which the source program is analyzed and where various transformations are applied to automatically improve efficiency. In some cases, it may happen that the attempt for improvement overshoots the target and results in programs which are perhaps fast but are no longer equivalent to the original program.
In the lecture, we give an overview over standard techniques for improving the quality of the generated code. In particular, we are interested in methods which guarantee that the resulting code still is equivalent to the source program.
The topics covered:
- Intra-procedural analysis and optimizations
- Abstract Interpretation and Interval Analysis
- Interprocedural optimizations
- Exploitation of hardware features such as registers, pipelines, caches, specific instructions
- Optimization of functional languages
- Optimization of Prolog
Last year slides
NEW: Repetition exam review will take place on Tuesday, April 30 16:15 - 17:15 in the room 02.07.034. You may also review your end-of-term exam, if you missed the appointment in March.
The written exam will take place on Tuesday, February 26, 10:30 - 12:30 in the hall 102, Interims Hörsaal 2. The only allowed auxiliary material is one A4 (double-sided) cheat sheet.
The repetition exam is on Friday, April 12, 10:30 - 12:30 in the lecture hall MW 1801, Ernst-Schmidt-Hörsaal. You can register for the re-exam between March 18 and April 1.
Exercises take place on Wednesdays 12:30 - 14:00 in 02.07.014.
Please prepare the corresponding sheet below.
07.11. exercise sheet 2, ex. 2-4
13.02 Office hours. No new exercise sheet, please prepare your questions
If you have any questions regarding organization or content of the exercises, please contact Anastasiia Izycheva (firstname.lastname@example.org).
UPDATE: The presentations take place on March 7 starting at 10:30 am in the room 02.09.014. We planned the time until 14:15
@Project teams only: If you have a good reason why you can't make it for the presentations, please email Anastasiia Izycheva as soon as possible.
Students who are not involved in the projects are not required to attend the presentations.
For the implementation projects you can use a Java front-end for a very restricted C.
To get a grade bonus you will have to submit an artefact and present your project.
|10:30||Loop unrolling, bounds detection and constant propagation|
|11:00||Function inlining, unrolling for recursive functions and tail-call optimization|
|13:15||Interval Analysis with the interval set domain|
List of projects
- 1 person - Software pipelining
- 2 people - Polyhedral model and affine scheduling + any optimization based on the polyhedral model
- 3 people - PBQP talk + implementation + register allocation using PBQP
- 2 people - Loop unrolling + find loop bounds + constant propagation
- 2 people - Function inlining (different strategies - provide the call graph) + unroll for recursive functions + tail call optimization
- 2 people - Deal with dynamic calls:
- adaption of syntax/semantics
- analysis of functions (function pointers) residing in blocks
- extended call-graph construction
- extend Points-to analysis for function calls (pointers)
- 1 person - Interval Analysis with the interval set domain
- 2 people - SSA form
- Helmut Seidl, Reinhard Wilhelm and Sebastian Hack. Compiler Design - Analysis and Transformation. Springer, 2012.
- Helmut Seidl, Reinhard Wilhelm and Sebastian Hack. Übersetzerbau 3: Analyse und Transformation. Springer, 2010.