Just wanted to share an observation of something I realised last week. We have quite a few passes that are disable by default. Just looking at the loop passes, then all of these are off by default:
LoopDistribute
LoopFlatten
LoopInterchange
LoopReroll
LoopUnrollAndJam
LoopVersioningLICM
SimpleLoopUnswitch
Some are probably more specific for a use-case and it’s just good to have certain transformations in our toolbox, but I guess what I want to say is that it looks like there are opportunities to get more of these on by default, although I appreciate of course that will involve a bit of work. For example, LoopFlatten (mea culpa) needs a correctness fix, but other than that perhaps not difficult to get enabled. Not sure if LoopReroll is just a benchmark special, but from a quick look that also needs a correctness fix. Interchange and UnrollAndJam would for example be really interesting to get on by default, but not sure if tricky cost modelling business prevents that at the moment. LoopDistribute seems to be getting some TLC (D99596), and don’t know much about the others.
(Apologies if this has been discussed in the Loop Opt WG, I couldn’t find anything after a quick look)