Program Optimization with LLVM

Advisors Dr. Michael Petter, Michael Schwarz
Location MI 02.07.051
Date daily, 3 weeks during the semester
Module IN2106, IN0012


Preliminary Meeting: Feb 04th 2020 14:00 in MI 02.07.051


In this practical course we will integrate a basic program analysis in the LLVM Opt tool, and explore the generated IR code for potential optimizations.

Last semester, students have worked on an initial program analysis framework for intraprocedural analysis. First steps into interprocedural analysis via Call-String-1 concepts are now also part of the framework. This semester, we may

  1. Implement a general integer value set abstraction (from bounded sets over sets of intervals to intervals)
  2. Start function pointer analysis, i.e. abstract interpretation of getelementptr
  3. Figure out concepts for supporting memory access outside of LLVM temporary registers

General Concept

This course is held as a blocked course during the some 3 weeks during the semester. During this time, You are expected to be present to join the programming efforts for the equivalent of at least 10x6h. Since you might be required to attend other courses, You can strech this over the aforementioned 3 weeks.

This course consists in applying the abstract interpretation techniques from the module Program Optimization to a practical project. We have a basic framework already prepared in the form of a C++ based LLVM Plugin, to be found in a git project .

In order to work on this project successfully, You need to be familiar with both C++ programming as well as Program Optimization. We will not have the time to introduce basic concepts in either of these topics, so please make sure, that You meet these requirements.


Wilhelm, Seidl, Hack, Übersetzerbau 3 - Analyse und Transformation (accessible in German with TUM credentials over shibboleth), Springer 2012