[DAGCombiner] Fix crash for the merge stores with different value type
authorchenglin.bi <chenglin.bi@linaro.org>
Fri, 14 Oct 2022 17:16:19 +0000 (01:16 +0800)
committerchenglin.bi <chenglin.bi@linaro.org>
Fri, 14 Oct 2022 17:16:35 +0000 (01:16 +0800)
commitc1909d73372e669a44a2aefe82de873c2161cc44
tree41d44dba4ec9e67e9c04def2b88ec15e12311ae4
parentf1f3612417a89f797ec2d6d405dd30d6890bef9e
[DAGCombiner] Fix crash for the merge stores with different value type

The crash case comes from #58350. It have two stores, one store is type f32 and the other is v1f32.
When we try to merge these two stores on v1f32, the memVT is vector type so the old code will use ISD::EXTRACT_SUBVECTOR for type f32 also then compiler crash.
So this patch insert a build_vector for f32 store to generate v1f32 also when memVT is v1f32.

Reviewed By: RKSimon

Differential Revision: https://reviews.llvm.org/D135954
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/test/CodeGen/AArch64/pr58350.ll [new file with mode: 0644]