1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 02:33:06 +01:00
llvm-mirror/lib/Transforms
Fraser Cormack 5e5115bbd0 [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

(cherry-picked from commit 7fb66d4)
2021-09-09 16:21:27 -07:00
..
AggressiveInstCombine
CFGuard
Coroutines [Coroutine] Record the elided coroutines 2021-07-27 13:14:09 +08:00
Hello
InstCombine [InstCombine] avoid infinite loops from min/max canonicalization 2021-08-16 11:35:38 -07:00
Instrumentation [ASAN] NFC: Remove redundant variable 2021-07-27 12:02:37 -07:00
IPO ThinLTO: Fix inline assembly references to static functions with CFI 2021-08-24 18:49:13 -07:00
ObjCARC [ObjC][ARC] Prevent moving objc_retain calls past objc_release calls 2021-07-05 12:16:15 -07:00
Scalar [MemCpyOpt] Fix a variety of scalable-type crashes 2021-09-09 16:21:27 -07:00
Utils [DebugInfo][LoopStrengthReduction] SCEV-based salvaging for LSR 2021-08-05 10:34:33 +01:00
Vectorize [LoopVectorize] Improve vectorisation of some intrinsics by treating them as uniform 2021-08-16 11:32:41 -07:00
CMakeLists.txt