[all-commits] [llvm/llvm-project] 7fb66d: [MemCpyOpt] Fix a variety of scalable-type crashes
Fraser Cormack via All-commits
all-commits at lists.llvm.org
Wed Sep 8 03:31:43 PDT 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 7fb66d4035960b3c2797eae73d79b8478ff0348e
https://github.com/llvm/llvm-project/commit/7fb66d4035960b3c2797eae73d79b8478ff0348e
Author: Fraser Cormack <fraser at codeplay.com>
Date: 2021-09-08 (Wed, 08 Sep 2021)
Changed paths:
M llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h
M llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
A llvm/test/Transforms/MemCpyOpt/vscale-crashes.ll
Log Message:
-----------
[MemCpyOpt] Fix a variety of scalable-type crashes
This patch fixes a variety of crashes resulting from the `MemCpyOptPass`
casting `TypeSize` to a constant integer, whether implicitly or
explicitly.
Since the `MemsetRanges` requires a constant size to work, all but one
of the fixes in this patch simply involve skipping the various
optimizations for scalable types as cleanly as possible.
The optimization of `byval` parameters, however, has been updated to
work on scalable types in theory. In practice, this optimization is only
valid when the length of the `memcpy` is known to be larger than the
scalable type size, which is currently never the case. This could
perhaps be done in the future using the `vscale_range` attribute.
Some implicit casts have been left as they were, under the knowledge
they are only called on aggregate types. These should never be
scalably-sized.
Reviewed By: nikic, tra
Differential Revision: https://reviews.llvm.org/D109329
More information about the All-commits
mailing list