1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-21 18:22:53 +01:00
llvm-mirror/include/llvm/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 [llvm] Fix header guards (NFC) 2021-02-05 21:02:06 -08:00
Coroutines [Coroutine] [Debug] Insert dbg.declare to entry.resume to print alloca in the coroutine frame under O2 2021-03-31 10:37:06 +08:00
InstCombine [InstCombine] isFreeToInvert(): constant expressions aren't free to invert (PR50370) 2021-05-17 14:58:05 +03:00
Instrumentation [NFC][asan] Always pass Dominator Trees into forAllReachableExits 2021-07-22 18:01:38 -07:00
IPO [Attributor] Change function internalization to not replace uses in internalized callers 2021-08-04 16:35:01 -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 [LV] Parallel annotated loop does not imply all loads can be hoisted. 2021-06-10 23:37:57 +02:00
CFGuard.h Add Windows Control Flow Guard checks (/guard:cf). 2019-10-28 15:19:39 +00:00
Coroutines.h [Coroutine] [Debug] Insert dbg.declare to entry.resume to print alloca in the coroutine frame under O2 2021-03-31 10:37:06 +08:00
Instrumentation.h [SanitizerCoverage] Drop !associated on metadata sections 2021-02-25 11:59:23 -08:00
IPO.h Function Specialization Pass 2021-06-11 09:11:29 +01:00
ObjCARC.h [NewPM] Run ObjC ARC passes 2021-01-08 15:47:11 -08:00
Scalar.h Add jump-threading optimization for deterministic finite automata 2021-07-27 14:34:04 -04:00
Utils.h Remove original implementation of UniqueInternalLinkageNames pass. 2021-03-10 11:57:40 -08:00
Vectorize.h [VectorCombine] new IR transform pass for partial vector ops 2020-02-09 10:04:41 -05:00