1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 10:42:39 +01:00
llvm-mirror/test/Transforms/LoopIdiom
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
..
AMDGPU
ARM
RISCV
X86 [LoopIdiom] Transform memmove-like loop into memmove (PR46179) 2021-07-22 13:05:43 +02:00
basic-address-space.ll
basic.ll [LoopIdiom] Don't transform loop into memmove when load from body has more than one use 2021-08-25 16:19:10 +02:00
crash.ll
ctpop-multiple-users-crash.ll
dbginfo-cost.ll
debug-line.ll
disable-options.ll
expander-do-not-delete-reused-values.ll
int_sideeffect.ll
lir-heurs-multi-block-loop.ll
memcpy-debugify-remarks.ll [loop-idiom] Hoist loop memcpys to loop preheader 2021-05-04 17:05:04 -07:00
memcpy-inline-intrinsic.ll [Intrinsics] Make MemCpyInlineInst a MemCpyInst 2021-07-02 10:25:24 -07:00
memcpy-intrinsic-different-types.ll [loop-idiom] Hoist loop memcpys to loop preheader 2021-05-04 17:05:04 -07:00
memcpy-intrinsic.ll [loop-idiom] Hoist loop memcpys to loop preheader 2021-05-04 17:05:04 -07:00
memcpy-vectors.ll [SVE] Remove checks for warnings in scalable-vector tests. 2021-04-07 15:59:32 +01:00
memcpy.ll [LoopIdiom] Added testcase from PR44378; NFC 2021-04-21 22:00:32 +02:00
memset_noidiom.ll
memset-debugify-remarks.ll [ScalarEvolution] Ensure backedge-taken counts are not pointers. 2021-06-21 16:24:16 -07:00
memset.ll [LoopIdiom] Added testcase for double memset (fixed in LLVM 12); NFC 2021-04-22 16:39:25 +02:00
non-canonical-loop.ll
non-integral-pointers.ll
nontemporal_store.ll
phi-insertion.ll
pr28196.ll
pr33114.ll
reuse-cast.ll
scev-invalidation_topmostloop.ll
scev-invalidation.ll
struct_pattern.ll
struct-custom-dl.ll
struct.ll
unordered-atomic-memcpy-noarch.ll
unroll-custom-dl.ll
unroll.ll
unsafe.ll
unwind.ll