Genetic Improvement in the Shackleton Framework for Optimizing LLVM Pass Sequences
This provides an automatic method for compiler optimization without expert knowledge, though it is incremental as it builds on existing genetic improvement techniques.
The paper tackles the problem of optimizing LLVM compiler pass sequences by applying genetic improvement to automatically find problem-specific optimizations, achieving a 3.7% mean runtime improvement over the default -O3 optimization level.
Genetic improvement is a search technique that aims to improve a given acceptable solution to a problem. In this paper, we present the novel use of genetic improvement to find problem-specific optimized LLVM pass sequences. We develop a pass-level patch representation in the linear genetic programming framework, Shackleton, to evolve the modifications to be applied to the default optimization pass sequences. Our GI-evolved solution has a mean of 3.7% runtime improvement compared to the -O3 optimization level in the default code generation options which optimizes on runtime. The proposed GI method provides an automatic way to find a problem-specific optimization sequence that improves upon a general solution without any expert domain knowledge. In this paper, we discuss the advantages and limitations of the GI feature in the Shackleton Framework and present our results.