[all-commits] [llvm/llvm-project] 7a211e: [RISCV] Prevent store combining from infinitely lo...
Fraser Cormack via All-commits
all-commits at lists.llvm.org
Mon May 24 02:27:41 PDT 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 7a211ed110a72ad453305aba250da50c965c2f8e
https://github.com/llvm/llvm-project/commit/7a211ed110a72ad453305aba250da50c965c2f8e
Author: Fraser Cormack <fraser at codeplay.com>
Date: 2021-05-24 (Mon, 24 May 2021)
Changed paths:
M llvm/lib/Target/RISCV/RISCVISelLowering.cpp
M llvm/lib/Target/RISCV/RISCVISelLowering.h
M llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-buildvec.ll
Log Message:
-----------
[RISCV] Prevent store combining from infinitely looping
RVV code generation does not successfully custom-lower BUILD_VECTOR in all
cases. When it resorts to default expansion it may, on occasion, be expanded to
scalar stores through the stack. Unfortunately these stores may then be picked
up by the post-legalization DAGCombiner which merges them again. The merged
store uses a BUILD_VECTOR which is then expanded, and so on.
This patch addresses the issue by overriding the `mergeStoresAfterLegalization`
hook. A lack of granularity in this method (being passed the scalar type) means
we opt out in almost all cases when RVV fixed-length vector support is enabled.
The only exception to this rule are mask vectors, which are always either
custom-lowered or are expanded to a load from a constant pool.
Reviewed By: HsiangKai
Differential Revision: https://reviews.llvm.org/D102913
More information about the All-commits
mailing list