1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 10:42:39 +01:00
llvm-mirror/lib/Transforms
Dawid Jurczak 79ff6e4b2d [LoopIdiom] Don't transform loop into memmove when load from body has more than one use
This change fixes issue found by Markus: https://reviews.llvm.org/rG11338e998df1
Before this patch following code was transformed to memmove:

for (int i = 15; i >= 1; i--) {
  p[i] = p[i-1];
  sum += p[i-1];
}

However load from p[i-1] is used not only by store to p[i] but also by sum computation.
Therefore we cannot emit memmove in loop header.

Differential Revision: https://reviews.llvm.org/D107964

(cherry picked from commit bdcf04246c401aec9bdddf32fabc99fa4834a477)
2021-08-25 16:19:10 +02:00
..
AggressiveInstCombine [NewPM] Don't mark AA analyses as preserved 2021-05-18 13:49:03 -07:00
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 [LoopIdiom] Don't transform loop into memmove when load from body has more than one use 2021-08-25 16:19:10 +02: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 [NewPM][HelloWorld] Move HelloWorld to Utils 2021-02-03 12:59:40 -08:00