[llvm] a8c6fb4 - [MemCpyOpt] Fix lifetime marker sizes in tests (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 12 02:55:04 PDT 2025
Author: Nikita Popov
Date: 2025-06-12T11:54:50+02:00
New Revision: a8c6fb4cb8e686f733e022afc549bc085d1558f4
URL: https://github.com/llvm/llvm-project/commit/a8c6fb4cb8e686f733e022afc549bc085d1558f4
DIFF: https://github.com/llvm/llvm-project/commit/a8c6fb4cb8e686f733e022afc549bc085d1558f4.diff
LOG: [MemCpyOpt] Fix lifetime marker sizes in tests (NFC)
As pointed out in https://github.com/llvm/llvm-project/pull/143782,
these tests were specifying the size in bits instead of bytes.
In order to preserve the intent of the tests, add a use of %src,
which prevents stack-move optimization. These are supposed to test
the handling of scoped alias metadata in call slot optimization.
Added:
Modified:
llvm/test/Analysis/ScopedNoAliasAA/alias-scope-merging.ll
llvm/test/Transforms/MemCpyOpt/callslot_badaa.ll
Removed:
################################################################################
diff --git a/llvm/test/Analysis/ScopedNoAliasAA/alias-scope-merging.ll b/llvm/test/Analysis/ScopedNoAliasAA/alias-scope-merging.ll
index 989049ab67a0b..840a5172561dc 100644
--- a/llvm/test/Analysis/ScopedNoAliasAA/alias-scope-merging.ll
+++ b/llvm/test/Analysis/ScopedNoAliasAA/alias-scope-merging.ll
@@ -1,17 +1,20 @@
; RUN: opt < %s -S -passes=memcpyopt | FileCheck --match-full-lines %s
+declare void @use(ptr)
+
; Alias scopes are merged by taking the intersection of domains, then the union of the scopes within those domains
define i8 @test(i8 %input) {
%tmp = alloca i8
%dst = alloca i8
%src = alloca i8
; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %dst, ptr align 8 %src, i64 1, i1 false), !alias.scope ![[SCOPE:[0-9]+]]
- call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %src), !noalias !4
+ call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %src), !noalias !4
store i8 %input, ptr %src
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %tmp, ptr align 8 %src, i64 1, i1 false), !alias.scope !0
- call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %src), !noalias !4
+ call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %src), !noalias !4
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %dst, ptr align 8 %tmp, i64 1, i1 false), !alias.scope !4
%ret_value = load i8, ptr %dst
+ call void @use(ptr %src)
ret i8 %ret_value
}
diff --git a/llvm/test/Transforms/MemCpyOpt/callslot_badaa.ll b/llvm/test/Transforms/MemCpyOpt/callslot_badaa.ll
index efdbdce401b76..601498e36a7a3 100644
--- a/llvm/test/Transforms/MemCpyOpt/callslot_badaa.ll
+++ b/llvm/test/Transforms/MemCpyOpt/callslot_badaa.ll
@@ -1,9 +1,11 @@
; RUN: opt < %s -S -passes=memcpyopt | FileCheck --match-full-lines %s
+declare void @use(ptr)
+
; Make sure callslot optimization merges alias.scope metadata correctly when it merges instructions.
; Merging here naively generates:
; call void @llvm.memcpy.p0.p0.i64(ptr align 8 %dst, ptr align 8 %src, i64 1, i1 false), !alias.scope !3
-; call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %src), !noalias !0
+; call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %src), !noalias !0
; ...
; !0 = !{!1}
; !1 = distinct !{!1, !2, !"callee1: %a"}
@@ -18,12 +20,13 @@ define i8 @test(i8 %input) {
%src = alloca i8
; NOTE: we're matching the full line and looking for the lack of !alias.scope here
; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %dst, ptr align 8 %src, i64 1, i1 false)
- call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %src), !noalias !3
+ call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %src), !noalias !3
store i8 %input, ptr %src
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %tmp, ptr align 8 %src, i64 1, i1 false), !alias.scope !0
- call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %src), !noalias !3
+ call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %src), !noalias !3
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %dst, ptr align 8 %tmp, i64 1, i1 false), !alias.scope !3
%ret_value = load i8, ptr %dst
+ call void @use(ptr %src)
ret i8 %ret_value
}
More information about the llvm-commits
mailing list