The front page of the LLVM website proudly claims that:| www.npopov.com
Another year has passed, so it’s once again time for my yearly summary blog post. As usual, this summary is mostly about my own work, and only covers the more significant / higher level items.| www.npopov.com
| nikic's blog
« Back to article overview.| www.npopov.com
Unlike miscompilations, reducing compiler crashes to a minimal test case is a straightforward process, which always follows the same general approach, and is supported by high-quality reduction tooling. However, I don’t think the entire process (and some of the edge cases) is documented anywhere, so I am trying to remedy that. Prerequisites To reduce LLVM crashes, it is strongly recommended to use an assertion-enabled build of LLVM (using -DLLVM_ENABLE_ASSERTIONS=true). You do not need (or ...| nikic's blog
Scalar evolution (SE or SCEV) models how values change inside loops. It can answer questions like “how many iterations does this loop perform?” and “What value does this variable have on the Nth iteration?” As such, it is the main building block for loop optimizations.| www.npopov.com
Conceptually, the backend of an optimizing compiler is supposed to be the part that performs CPU architecture specific optimizations, while the middle-end is target-independent. In reality, the middle-end does need to take certain properties of the target into account. However, these need to be carefully managed to maintain the overall architecture of the compiler.| www.npopov.com
Compilers are classically split into three parts: The front end, the middle end and the back end. The front end is what deals with programming-language specific analysis, such as parsing, type checking, etc.| www.npopov.com
Towards the end of last year, I switched from working on PHP at JetBrains, to working on LLVM at Red Hat. While it was already under discussion beforehand, this catalyzed the creation of the PHP foundation, which now pays multiple people to work on PHP. Special thanks for this go to Roman Pronskiy, who did most of the work to set up the foundation, and keeps it running ever since. Also a shout-out to Alexey Gopachenko, the unsung hero of PHP: As the PhpStorm team lead at the time, he drove Je...| nikic's blog
This is my second year working on LLVM at Red Hat. Similar to last year’s blog post, I want to summarize some of the things I’ve worked on this year.| www.npopov.com