> I did try adding some additional logic to adjust the way vsetvl fusion > occurs across basic blocks in these scenarios i.e. performing the > fusion in the opposite manner (breaking lcm guarantees); however, from > my testing, fusing two vsetvls didn't actually remove the fused > expression from the vinfo list. I'm not sure if that's intended but as a > result, phase 3 would remove the fused block and use the vinfo that > should've been fused into the other.
It depends on the specific example but keeping deleted vsetvls/infos around has a purpose because it helps delete other vsetvls still. I don't recall details but I remember having at least a few examples for it. -- Regards Robin