4 ms·
Eh, kinda? I mean regalloc is not an optimisation pass. And SROA/GVM go through whole functions, but they don't really optimise across blocks. They do local cha
by viraptor 1y ago
Eh, kinda? I mean regalloc is not an optimisation pass. And SROA/GVM go through whole functions, but they don't really optimise across blocks. They do local changes only with information from previous blocks available. I meant that I don't know of anything that makes modifications across multiple blocks as one complex change. Even licm pokes one thing at a time from one block to a different one. There's no complex "let's replace this kind of cross-block pattern with a different equivalent code that changes multiple blocks at the same time".
- pizlonator 1y agoSROA absolutely does a coordinated modification across an arbitrary number of blocks whenever it kills an alloca. GVN has cases where it’ll also make a coordinated change across multiple blocks And those are just two passes. I’m not mentioning the many other passes that have this property just for the sake of brevity.