1. 24
    1. 4

      The opaque pointer migration is the main task I worked on last year, and it carried substantially over into this year as well.

      So happy to see this finally land. It’s been a very long time coming. We started proposing it some time 5-7 years ago and it’s taken a huge amount of work to get to the point where it’s possible to flip the switch. I’m really looking forward to ptradd landing (though I’ll have to remove my ‘GEP? WTF? BBQ!’ slide from my LLVM tutorial deck).

      The goal of this project is to remove constant expressions that cannot be represented as relocations in common object formats, and represent them as ordinary instructions instead.

      This is also great to see. There’s a lot of complexity in various passes for handling constant expressions. I’ve missed optimisations at least twice because I forgot to handle the constant expression case in addition to the instruction case. I’d love to see constant expressions disallowed for anything except global initialisation.

      The largest improvement of 4-5% comes from making InstCombine use a single-iteration, instead of trying to reach a fix-point. See that blog post for a detailed discussion of this change.

      Has there been any progress on synthesising InstCombine from Alive2? I was really hoping that this C++ monstrosity could be buried under a crossroads at midnight with a stake through its heart at some point and replaced with code generated from a formal proof model.

      I don’t have good statistics on this (especially with Phabricator being decomissioned), but based on a back of the envelope calculation, I probably reviewed something like 1500 patches this year.

      That’s phenomenal. I haven’t touched upstream LLVM much in the last year (I reviewed a few MIPS patches, because the MIPS maintainer found himself in a war zone, but that’s about it), but I’m hoping to get back soon. I can’t imagine having a review load that big though. That’s around 7-8 reviews per work day, which is getting close to a full-time job.

      1. 4

        I really really like this post. I’m constantly nodding my head while reading this, as I literally have bad experience on almost every pain point mentioned in the post. It’s so good to see them fixed (or on the plan of being fixed). Great work!

        1. 3

          I’m so incredibly grateful for Nikita’s contributions to LLVM. The review work mentioned in the article can’t be highlighted enough. Thank you!