Idealer Gebrauch von LLVM-Optimierungstechniken zur Verbesserung statischer Analyse von Echtzeitsystemen

  • Typ der Arbeit: Bachelorarbeit
  • Status der Arbeit: abgeschlossen
  • Projekte: AHA
  • Betreuer: Gerion Entrup, Daniel Lohmann
  • Bearbeiter: Manuel Breiden
  • Ende der Arbeit: 19. Apr 2020

ARA is a program to statically analyze a real-time system to extract all operating system instances (like threads) together with their interactions (what thread interact with this queue?). It uses LLVM to extract the initial control-flow graph (CFG) and uses some further analysis passes of LLVM like dominator analysis. However, a bunch of analysis passes of LLVM that could be beneficial for ARA are not used (such as alias analysis or loop unrolling). The goal of this thesis is to utilize as many LLVM passes as possible for its usage in ARA.

Therefore the following tasks should be done:

  • Detect LLVM passes that are usable for ARA.
  • Evaluate the best order to execute those passes.
  • Execute this LLVM-pass chain in ARA.
  • Evaluate the result with appropriate test cases.

Topics covered by this thesis:
static analysis, LLVM, C++, C, compiler optimization

Further Reading

OSPERT Workshop B
ARA: Automatic Instance-Level Analysis in Real-Time Systems
Gerion Entrup, Benedikt Steinmeier, Christian DietrichProceedings of the 15th Annual Workshop on Operating Systems Platforms for Embedded Real-Time Applications (OSPERT '19)2019.
PDF [BibTex]
OSPERT Workshop B Best Paper Award
Levels of Specialization in Real-Time Operating Systems
Björn Fiedler, Gerion Entrup, Christian Dietrich, Daniel LohmannProceedings of the 14th Annual Workshop on Operating Systems Platforms for Embedded Real-Time Applications (OSPERT '18)2018Best Paper Award.
PDF [BibTex]
TECS Journal A
Global Optimization of Fixed-Priority Real-Time Systems by RTOS-Aware Control-Flow Analysis
Christian Dietrich, Martin Hoffmann, Daniel LohmannACM Transactions on Embedded Computing Systems16.2ACM Press2017.
PDF Raw Data 10.1145/2950053 [BibTex]
LLVM website:
LLVM passes: