[PATCH] D150967: precommit test for memcpy removal for noalias, readonly attributed arguments

Kohei Asano via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri May 19 07:44:56 PDT 2023


khei4 created this revision.
khei4 added a reviewer: nikic.
Herald added subscribers: jeroen.dobbelaere, StephenFan, JDevlieghere.
Herald added a project: All.
khei4 requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

motivated to resolve https://github.com/rust-lang/rust/issues/107436

base idea: https://discourse.llvm.org/t/llvm-addressing-rust-optimization-failures-in-llvm/68096/3


https://reviews.llvm.org/D150967

Files:
  llvm/test/Transforms/MemCpyOpt/memcpy.ll


Index: llvm/test/Transforms/MemCpyOpt/memcpy.ll
===================================================================
--- llvm/test/Transforms/MemCpyOpt/memcpy.ll
+++ llvm/test/Transforms/MemCpyOpt/memcpy.ll
@@ -391,3 +391,19 @@
 
 declare void @f1(ptr nocapture sret(%struct.big))
 declare void @f2(ptr)
+
+declare void @fnr(ptr noalias readonly)
+define noundef i32 @noalias_readonly(ptr align 4 noalias readonly %val) {
+; CHECK-LABEL: @noalias_readonly(
+; CHECK-NEXT:  start:
+; CHECK-NEXT:    [[VAL1:%.*]] = alloca i8, align 4
+; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[VAL1]], ptr align 4 [[VAL:%.*]], i64 1, i1 false)
+; CHECK-NEXT:    [[TMP0:%.*]] = call noundef i32 @fnr(ptr noalias readonly align 4 [[VAL1]])
+; CHECK-NEXT:    ret i32 [[TMP0]]
+;
+start:
+  %val1 = alloca i8, align 4
+  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %val1, ptr align 4 %val, i64 1, i1 false)
+  %0 = call noundef i32 @fnr(ptr align 4 noalias readonly %val1)
+  ret i32 %0
+}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D150967.523773.patch
Type: text/x-patch
Size: 989 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230519/622b12a5/attachment.bin>


More information about the llvm-commits mailing list