Code Optimization in Production Compilers NSWI134, 2020
- 22. února
- Stručná historie překladačů. Open-source projekty: GCC, LLVM, Open64, Spider Monkey, Chrome V8
- 1. března
- Základní stuktura toolchainu. Mezijazyky. Typy v GIMPLu Gimple (high-level typy), LLVM (midlevel typy) a RTL (low-level). WHIRL použitý v Open64 (příklad jazyka s vícero úrovněma) MLIR, nový víceúrovňový jazyk pro LLVM.
- 8. brezna
Mezijaziky, 2 cast. Lokalni optimalizace (vod)
- 15. brezna
Dataflow - relaxacni algoritmus, casovy odhad pomoci D(cfg), formulae dataflow pro CSE, propagaci konstant a DCE.
Possible software projects
- Making autoFDO useful. Google implemented profile feedback support which is based on data collected by low overhead profiler perf. This code is however not maintained and not finished. Making this to work well would be quite useful.
- Better loop profiling. This would involve extending -fprofile-generate flag to collect information about loops, in particular the histograms of numbers of iterations. This would be then useful to improve optimization decisions such as autovectorization.
- Better phi elimination. This would involve to implement part of this paper, in particular optimization of PHI nodes (Algorithm 3, page 106 of the proceedings).
- Incremental link-time optimization. Implement cache to re-use partitions of program which did not change during compile/edit cycle with LTO. ThinLTO from LLVM has similar feature though implemented on different level.
- Rust frotnend improvments.