FailedChanges

Summary

  1. [OpenMP][NFC] Refactor Clang OpenMP tests using update_cc_test_checks (details)
  2. [loop-idiom] Hoist loop memcpys to loop preheader (details)
Commit 956cae2f09b21429dbcb02066c99e35a239aa4bf by georgakoudis1
[OpenMP][NFC] Refactor Clang OpenMP tests using update_cc_test_checks

This patch refactors a subset of Clang OpenMP tests, generating checklines using the update_cc_test_checks script. This refactoring facilitates updating the Clang OpenMP code generation codebase by automating test generation.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D101849
The file was modifiedclang/test/OpenMP/target_map_codegen_03.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_simd_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/for_lastprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_parallel_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/single_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_reduction_task_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_teams_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_simd_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_simd_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_simd_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_proc_bind_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_map_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_codegen_global_capture.cpp (diff)
The file was modifiedclang/test/OpenMP/task_in_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/openmp_win_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_target_teams_distribute_parallel_for_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_parallel_for_simd_if_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_master_taskloop_lastprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_simd_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_schedule_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_simd_lastprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_simd_if_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_for_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_lastprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_parallel_for_simd_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_simd_lastprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_parallel_num_threads_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_simd_dist_schedule_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_target_teams_distribute_parallel_for_simd_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_for_reduction_task_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/sections_lastprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_lambda_capturing.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_reduction_task_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_simd_schedule_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_if_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_parallel_for_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_sections_reduction_task_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_collapse_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/declare_target_codegen_globalization.cpp (diff)
The file was modifiedclang/test/OpenMP/taskloop_in_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_distribute_parallel_generic_mode_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_simd_collapse_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_parallel_for_if_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_simd_schedule_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_master_taskloop_simd_lastprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_parallel_for_lastprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_simd_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_parallel_for_simd_lastprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/master_taskloop_in_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_thread_limit_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_parallel_for_simd_num_threads_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/task_if_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_collapse_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_collapse_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_simd_collapse_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_multi_target_parallel_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_parallel_for_proc_bind_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_dist_schedule_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/sections_reduction_task_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/for_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_parallel_for_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_target_parallel_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/master_taskloop_simd_in_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_simd_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_copyin_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_parallel_for_simd_proc_bind_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_simd_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_simd_lastprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/single_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_master_taskloop_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/for_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_if_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_allocate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_dist_schedule_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_nested_parallel_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_simd_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/for_reduction_task_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_for_lastprivate_conditional.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_simd_if_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_simd_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_master_taskloop_simd_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_master_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_data_sharing.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_target_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_parallel_for_reduction_task_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_target_teams_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_simd_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_parallel_for_num_threads_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/debug-info-complex-byval.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_lastprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/for_reduction_codegen_UDR.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_for_linear_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_schedule_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/cancellation_point_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_simd_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_parallel_for_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_parallel_for_debug_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_simd_dist_schedule_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_parallel_for_simd_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/sections_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_sections_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/for_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/sections_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_parallel_for_simd_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_simd_lastprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/ordered_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_parallel_reduction_task_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_simd_proc_bind_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_simd_lastprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_dist_schedule_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_if_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_num_threads_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_copyin_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_simd_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/sections_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_num_teams_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_reduction_task_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_order_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_simd_proc_bind_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_simd_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_teams_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/for_linear_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/cancel_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_collapse_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/vla_crash.c (diff)
The file was modifiedclang/test/OpenMP/distribute_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_parallel_for_simd_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_target_teams_distribute_parallel_for_generic_mode_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/tile_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_simd_collapse_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_simd_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_master_reduction_task_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_proc_bind_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_simd_collapse_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_dist_schedule_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_parallel_debug_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/parallel_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_parallel_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_simd_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_simd_dist_schedule_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_simd_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/single_firstprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/debug-info-openmp-array.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_simd_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_simd_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_parallel_for_simd_num_threads_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_lastprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_target_parallel_reduction_codegen_tbaa_PR46146.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_parallel_for_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/distribute_parallel_for_reduction_task_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_target_teams_distribute_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/taskloop_simd_in_reduction_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_simd_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_private_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_parallel_for_lastprivate_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/task_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_parallel_for_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_parallel_if_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/target_teams_distribute_simd_dist_schedule_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/nvptx_target_parallel_num_threads_codegen.cpp (diff)
The file was modifiedclang/test/OpenMP/teams_distribute_lastprivate_codegen.cpp (diff)
Commit da1cdffbb1b729d221360a76e1c0793992b05dfc by zhuhan7737
[loop-idiom] Hoist loop memcpys to loop preheader

For a simple loop like:
```
struct S {
  int x;
  int y;
  char b;
};

unsigned foo(S* __restrict__ a, S* b, int n) {
  for (int i = 0; i < n; i++)
    a[i] = b[i];

  return sizeof(a[0]);
}
```
We could eliminate the loop and convert it to a large memcpy of 12*n bytes. Currently this is not handled. Output of `opt -loop-idiom -S < memcpy_before.ll`
```
%struct.S = type { i32, i32, i8 }

define dso_local i32 @_Z3fooP1SS0_i(%struct.S* noalias nocapture %a, %struct.S* nocapture readonly %b, i32 %n) local_unnamed_addr {
entry:
  %cmp7 = icmp sgt i32 %n, 0
  br i1 %cmp7, label %for.body.preheader, label %for.cond.cleanup

for.body.preheader:                               ; preds = %entry
  br label %for.body

for.cond.cleanup.loopexit:                        ; preds = %for.body
  br label %for.cond.cleanup

for.cond.cleanup:                                 ; preds = %for.cond.cleanup.loopexit, %entry
  ret i32 12

for.body:                                         ; preds = %for.body, %for.body.preheader
  %i.08 = phi i32 [ %inc, %for.body ], [ 0, %for.body.preheader ]
  %idxprom = zext i32 %i.08 to i64
  %arrayidx = getelementptr inbounds %struct.S, %struct.S* %b, i64 %idxprom
  %arrayidx2 = getelementptr inbounds %struct.S, %struct.S* %a, i64 %idxprom
  %0 = bitcast %struct.S* %arrayidx2 to i8*
  %1 = bitcast %struct.S* %arrayidx to i8*
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 4 dereferenceable(12) %0, i8* nonnull align 4 dereferenceable(12) %1, i64 12, i1 false)
  %inc = add nuw nsw i32 %i.08, 1
  %cmp = icmp slt i32 %inc, %n
  br i1 %cmp, label %for.body, label %for.cond.cleanup.loopexit
}

; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #0

attributes #0 = { argmemonly nofree nosync nounwind willreturn }

```
The loop idiom pass currently only handles load and store instructions. Since struct S is too big to fit in a register, the loop body contains a memcpy intrinsic.

With this change, re-run `opt -loop-idiom -S < memcpy_before.ll`. The loop memcpy is promoted to loop preheader. For this trivial case, the loop is dead and will be removed by another pass.
```
%struct.S = type { i32, i32, i8 }

define dso_local i32 @_Z3fooP1SS0_i(%struct.S* noalias nocapture %a, %struct.S* nocapture readonly %b, i32 %n) local_unnamed_addr {
entry:
  %a1 = bitcast %struct.S* %a to i8*
  %b2 = bitcast %struct.S* %b to i8*
  %cmp7 = icmp sgt i32 %n, 0
  br i1 %cmp7, label %for.body.preheader, label %for.cond.cleanup

for.body.preheader:                               ; preds = %entry
  %0 = zext i32 %n to i64
  %1 = mul nuw nsw i64 %0, 12
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %a1, i8* align 4 %b2, i64 %1, i1 false)
  br label %for.body

for.cond.cleanup.loopexit:                        ; preds = %for.body
  br label %for.cond.cleanup

for.cond.cleanup:                                 ; preds = %for.cond.cleanup.loopexit, %entry
  ret i32 12

for.body:                                         ; preds = %for.body, %for.body.preheader
  %i.08 = phi i32 [ %inc, %for.body ], [ 0, %for.body.preheader ]
  %idxprom = zext i32 %i.08 to i64
  %arrayidx = getelementptr inbounds %struct.S, %struct.S* %b, i64 %idxprom
  %arrayidx2 = getelementptr inbounds %struct.S, %struct.S* %a, i64 %idxprom
  %2 = bitcast %struct.S* %arrayidx2 to i8*
  %3 = bitcast %struct.S* %arrayidx to i8*
  %inc = add nuw nsw i32 %i.08, 1
  %cmp = icmp slt i32 %inc, %n
  br i1 %cmp, label %for.body, label %for.cond.cleanup.loopexit
}

; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #0

attributes #0 = { argmemonly nofree nosync nounwind willreturn }
```

Reviewed By: zino

Differential Revision: https://reviews.llvm.org/D97667
The file was modifiedllvm/test/Transforms/LoopIdiom/memcpy-debugify-remarks.ll (diff)
The file was modifiedllvm/test/Transforms/LoopIdiom/memset-debugify-remarks.ll (diff)
The file was addedllvm/test/Transforms/LoopIdiom/memcpy-intrinsic-different-types.ll
The file was addedllvm/test/Transforms/LoopIdiom/memcpy-intrinsic.ll
The file was modifiedllvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp (diff)