Ran across this when making a change to RISCV memset lowering. Seems very odd that manually merging a store into a vector prevents it from being further merged.
p.s. I'm making this depend on the RISCV mem* lowering, but this could easily be rebased off that change set. If reviewers would prefer to separate, let me know.
I believe this function allows undef elements. Does that case work ok?