Compilers come with hundreds of optimization passes, making it difficult to select which passes to run and deciding the order in which to execute them. Typically, compilers achieve this by running the standard optimization pass pipelines. However, customized sequences of passes for a particular program can significantly improve the performance compared to the standard optimizations.

So it is important to study the dependencies between these optimizations passes, and how they affect the code structure. This will pave the way to improve the existing heuristics for ordering the compiler optimization passes; heuristics that can select the optimal pass order depending on the code structure.

Another interesting approach is to use machine learning to optimize the compiler rather than rely on heuristics. Making machines learn how to optimize the compiler, is a faster approach to produce target-specific optimizations for the underlying platform, as well as for the code structure. For instance, machine learning can be used to identify patterns in code structure and then select the ideal optimization sequences specific to those patterns to get high performance for that program.


Tarindu Jayatilaka


  • EJ Park
  • Giorgis Georgakoudis
  • Johannes Doerfert