Giovanni actually sent a very similar patch to 1/4 [1] several months ago. It wasn't accepted, and I'm not sure what discussion there was about it if any (it may have been off-list).
The reason I remember was more or less the same thing you say now: there are more generic passes that can be written instead of this trick, and in practice it didn't really enable anything relevant, so you proposed to rather wait for somebody to write the proper thing. Since now it could enable the aoffimmi modifiers there could be a better reason to have it immediately (or, rather, after the freeze), even if it's not the best possible solution yet.
Though I am not sure of what you mean by "generic vectorization of stores". The peculiar feature that is exploited by this patch is the fact that immediate constants can be vectorized, i.e., you can replace ``` a.x = 1; a.y = 2; a.z = 3; ``` with ``` a.xyz = {1, 2, 3}; ```
But as I said that's rather a property of immediate constants, rather than of stores. In other words, I would describe a "generic vectorization of stores" as something that replaces ``` a.x = b.x; a.y = b.y; a.z = b.z; ``` with ``` a = b; ```
That's not something you can do in Francisco's example unless you know that immediate constants are special, i.e., you can vectorize them even if they come from different sources. Which is basically what my patch was doing (and what I believe this patch does; I say "believe" because I haven't read it yet in detail). So it seems to me that in one way or another you always need to have something like this patch, even if it would be good to also handle the cases in which only some components are immediate constants.
Or maybe you had already disproved the thing I just wrote and I don't remember any more? I wouldn't be unheard of for my brain to randomly drop pieces of information.