[llvm] [FunctionAttrs] Regenerate test checks (NFC) (PR #201576)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 4 05:49:36 PDT 2026
https://github.com/nikic created https://github.com/llvm/llvm-project/pull/201576
None
>From 4c65b58877f3f98d7c21a4b86abc03a7820ac2e6 Mon Sep 17 00:00:00 2001
From: Nikita Popov <npopov at redhat.com>
Date: Thu, 4 Jun 2026 14:46:21 +0200
Subject: [PATCH] [FunctionAttrs] Regenerate test checks (NFC)
---
.../FunctionAttrs/2009-01-02-LocalStores.ll | 40 +++++---
llvm/test/Transforms/FunctionAttrs/nofree.ll | 93 ++++++++++---------
llvm/test/Transforms/FunctionAttrs/optnone.ll | 22 ++---
.../out-of-bounds-iterator-bug.ll | 43 +++++++--
4 files changed, 125 insertions(+), 73 deletions(-)
diff --git a/llvm/test/Transforms/FunctionAttrs/2009-01-02-LocalStores.ll b/llvm/test/Transforms/FunctionAttrs/2009-01-02-LocalStores.ll
index a3b065667702f..7bbd95282fa3f 100644
--- a/llvm/test/Transforms/FunctionAttrs/2009-01-02-LocalStores.ll
+++ b/llvm/test/Transforms/FunctionAttrs/2009-01-02-LocalStores.ll
@@ -1,23 +1,39 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=function-attrs -S | FileCheck %s
-; CHECK: define ptr @a(ptr readonly captures(none) %p)
define ptr @a(ptr %p) {
- %tmp = load ptr, ptr %p
- ret ptr %tmp
+; CHECK-LABEL: define ptr @a(
+; CHECK-SAME: ptr readonly captures(none) [[P:%.*]]) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[TMP:%.*]] = load ptr, ptr [[P]], align 8
+; CHECK-NEXT: ret ptr [[TMP]]
+;
+ %tmp = load ptr, ptr %p
+ ret ptr %tmp
}
-; CHECK: define ptr @b(ptr %q)
define ptr @b(ptr %q) {
- %mem = alloca ptr
- store ptr %q, ptr %mem
- %tmp = call ptr @a(ptr %mem)
- ret ptr %tmp
+; CHECK-LABEL: define ptr @b(
+; CHECK-SAME: ptr [[Q:%.*]]) #[[ATTR1:[0-9]+]] {
+; CHECK-NEXT: [[MEM:%.*]] = alloca ptr, align 8
+; CHECK-NEXT: store ptr [[Q]], ptr [[MEM]], align 8
+; CHECK-NEXT: [[TMP:%.*]] = call ptr @a(ptr [[MEM]])
+; CHECK-NEXT: ret ptr [[TMP]]
+;
+ %mem = alloca ptr
+ store ptr %q, ptr %mem
+ %tmp = call ptr @a(ptr %mem)
+ ret ptr %tmp
}
-; CHECK: define ptr @c(ptr readnone returned captures(address_is_null, ret: address, provenance) %r)
@g = global i32 0
define ptr @c(ptr %r) {
- %a = icmp eq ptr %r, null
- store i32 1, ptr @g
- ret ptr %r
+; CHECK-LABEL: define ptr @c(
+; CHECK-SAME: ptr readnone returned captures(address_is_null, ret: address, provenance) [[R:%.*]]) #[[ATTR2:[0-9]+]] {
+; CHECK-NEXT: [[A:%.*]] = icmp eq ptr [[R]], null
+; CHECK-NEXT: store i32 1, ptr @g, align 4
+; CHECK-NEXT: ret ptr [[R]]
+;
+ %a = icmp eq ptr %r, null
+ store i32 1, ptr @g
+ ret ptr %r
}
diff --git a/llvm/test/Transforms/FunctionAttrs/nofree.ll b/llvm/test/Transforms/FunctionAttrs/nofree.ll
index 89f030d915303..b896226405012 100644
--- a/llvm/test/Transforms/FunctionAttrs/nofree.ll
+++ b/llvm/test/Transforms/FunctionAttrs/nofree.ll
@@ -1,13 +1,11 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-attributes
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-attributes --version 6
; RUN: opt < %s -passes=function-attrs -S | FileCheck %s
-target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-unknown-linux-gnu"
-
define void @_Z4foo1Pi(ptr nocapture readnone %a) local_unnamed_addr #0 {
; CHECK: Function Attrs: uwtable
-; CHECK-LABEL: @_Z4foo1Pi(
-; CHECK-NEXT: entry:
+; CHECK-LABEL: define void @_Z4foo1Pi(
+; CHECK-SAME: ptr readnone captures(none) [[A:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
; CHECK-NEXT: tail call void @_Z3extv()
; CHECK-NEXT: ret void
;
@@ -20,9 +18,10 @@ declare void @_Z3extv() local_unnamed_addr
define void @_Z4foo2Pi(ptr nocapture %a) local_unnamed_addr #1 {
; CHECK: Function Attrs: nounwind uwtable
-; CHECK-LABEL: @_Z4foo2Pi(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: tail call void @free(ptr [[A:%.*]]) #[[ATTR2:[0-9]+]]
+; CHECK-LABEL: define void @_Z4foo2Pi(
+; CHECK-SAME: ptr captures(none) [[A:%.*]]) local_unnamed_addr #[[ATTR1:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: tail call void @free(ptr [[A]]) #[[ATTR2:[0-9]+]]
; CHECK-NEXT: ret void
;
entry:
@@ -34,9 +33,10 @@ declare void @free(ptr nocapture) local_unnamed_addr #2
define i32 @_Z4foo3Pi(ptr nocapture readonly %a) local_unnamed_addr #3 {
; CHECK: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable
-; CHECK-LABEL: @_Z4foo3Pi(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[A:%.*]], align 4
+; CHECK-LABEL: define i32 @_Z4foo3Pi(
+; CHECK-SAME: ptr readonly captures(none) [[A:%.*]]) local_unnamed_addr #[[ATTR3:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[A]], align 4
; CHECK-NEXT: ret i32 [[TMP0]]
;
entry:
@@ -46,9 +46,10 @@ entry:
define double @_Z4foo4Pd(ptr nocapture readonly %a) local_unnamed_addr #1 {
; CHECK: Function Attrs: nounwind uwtable
-; CHECK-LABEL: @_Z4foo4Pd(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: [[TMP0:%.*]] = load double, ptr [[A:%.*]], align 8
+; CHECK-LABEL: define double @_Z4foo4Pd(
+; CHECK-SAME: ptr readonly captures(none) [[A:%.*]]) local_unnamed_addr #[[ATTR1]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = load double, ptr [[A]], align 8
; CHECK-NEXT: [[CALL:%.*]] = tail call double @cos(double [[TMP0]]) #[[ATTR2]]
; CHECK-NEXT: ret double [[CALL]]
;
@@ -62,9 +63,10 @@ declare double @cos(double) local_unnamed_addr #2
define noalias ptr @_Z4foo5Pm(ptr nocapture readonly %a) local_unnamed_addr #1 {
; CHECK: Function Attrs: nounwind uwtable
-; CHECK-LABEL: @_Z4foo5Pm(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr [[A:%.*]], align 8
+; CHECK-LABEL: define noalias ptr @_Z4foo5Pm(
+; CHECK-SAME: ptr readonly captures(none) [[A:%.*]]) local_unnamed_addr #[[ATTR1]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr [[A]], align 8
; CHECK-NEXT: [[CALL:%.*]] = tail call noalias ptr @malloc(i64 [[TMP0]]) #[[ATTR2]]
; CHECK-NEXT: ret ptr [[CALL]]
;
@@ -78,9 +80,10 @@ declare noalias ptr @malloc(i64) local_unnamed_addr #2
define noalias ptr @_Z4foo6Pm(ptr nocapture %a) local_unnamed_addr #1 {
; CHECK: Function Attrs: nounwind uwtable
-; CHECK-LABEL: @_Z4foo6Pm(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr [[A:%.*]], align 8
+; CHECK-LABEL: define noalias ptr @_Z4foo6Pm(
+; CHECK-SAME: ptr captures(none) [[A:%.*]]) local_unnamed_addr #[[ATTR1]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr [[A]], align 8
; CHECK-NEXT: [[CALL:%.*]] = tail call ptr @realloc(ptr [[A]], i64 [[TMP0]]) #[[ATTR2]]
; CHECK-NEXT: ret ptr [[CALL]]
;
@@ -94,14 +97,15 @@ declare noalias ptr @realloc(ptr nocapture, i64) local_unnamed_addr #2
define void @_Z4foo7Pi(ptr %a) local_unnamed_addr #1 {
; CHECK: Function Attrs: nounwind uwtable
-; CHECK-LABEL: @_Z4foo7Pi(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: [[ISNULL:%.*]] = icmp eq ptr [[A:%.*]], null
-; CHECK-NEXT: br i1 [[ISNULL]], label [[DELETE_END:%.*]], label [[DELETE_NOTNULL:%.*]]
-; CHECK: delete.notnull:
+; CHECK-LABEL: define void @_Z4foo7Pi(
+; CHECK-SAME: ptr [[A:%.*]]) local_unnamed_addr #[[ATTR1]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[ISNULL:%.*]] = icmp eq ptr [[A]], null
+; CHECK-NEXT: br i1 [[ISNULL]], label %[[DELETE_END:.*]], label %[[DELETE_NOTNULL:.*]]
+; CHECK: [[DELETE_NOTNULL]]:
; CHECK-NEXT: tail call void @_ZdlPv(ptr [[A]]) #[[ATTR6:[0-9]+]]
-; CHECK-NEXT: br label [[DELETE_END]]
-; CHECK: delete.end:
+; CHECK-NEXT: br label %[[DELETE_END]]
+; CHECK: [[DELETE_END]]:
; CHECK-NEXT: ret void
;
entry:
@@ -120,14 +124,15 @@ declare void @_ZdlPv(ptr) local_unnamed_addr #4
define void @_Z4foo8Pi(ptr %a) local_unnamed_addr #1 {
; CHECK: Function Attrs: nounwind uwtable
-; CHECK-LABEL: @_Z4foo8Pi(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: [[ISNULL:%.*]] = icmp eq ptr [[A:%.*]], null
-; CHECK-NEXT: br i1 [[ISNULL]], label [[DELETE_END:%.*]], label [[DELETE_NOTNULL:%.*]]
-; CHECK: delete.notnull:
+; CHECK-LABEL: define void @_Z4foo8Pi(
+; CHECK-SAME: ptr [[A:%.*]]) local_unnamed_addr #[[ATTR1]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[ISNULL:%.*]] = icmp eq ptr [[A]], null
+; CHECK-NEXT: br i1 [[ISNULL]], label %[[DELETE_END:.*]], label %[[DELETE_NOTNULL:.*]]
+; CHECK: [[DELETE_NOTNULL]]:
; CHECK-NEXT: tail call void @_ZdaPv(ptr [[A]]) #[[ATTR6]]
-; CHECK-NEXT: br label [[DELETE_END]]
-; CHECK: delete.end:
+; CHECK-NEXT: br label %[[DELETE_END]]
+; CHECK: [[DELETE_END]]:
; CHECK-NEXT: ret void
;
entry:
@@ -146,9 +151,10 @@ declare void @may_free()
define void @nofree_callsite_attr(ptr %a) {
; CHECK: Function Attrs: nofree
-; CHECK-LABEL: @nofree_callsite_attr(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: call void @may_free() #[[ATTR5:[0-9]+]]
+; CHECK-LABEL: define void @nofree_callsite_attr(
+; CHECK-SAME: ptr readnone captures(none) [[A:%.*]]) #[[ATTR5:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: call void @may_free() #[[ATTR5]]
; CHECK-NEXT: ret void
;
entry:
@@ -157,8 +163,9 @@ entry:
}
define void @unknown_call(ptr %fn) {
-; CHECK-LABEL: @unknown_call(
-; CHECK-NEXT: call void [[FN:%.*]]()
+; CHECK-LABEL: define void @unknown_call(
+; CHECK-SAME: ptr readonly captures(none) [[FN:%.*]]) {
+; CHECK-NEXT: call void [[FN]]()
; CHECK-NEXT: ret void
;
call void %fn()
@@ -166,8 +173,10 @@ define void @unknown_call(ptr %fn) {
}
define void @unknown_nofree_call(ptr %fn) {
-; CHECK-LABEL: @unknown_nofree_call(
-; CHECK-NEXT: call void [[FN:%.*]]() #[[ATTR5]]
+; CHECK: Function Attrs: nofree
+; CHECK-LABEL: define void @unknown_nofree_call(
+; CHECK-SAME: ptr readonly captures(none) [[FN:%.*]]) #[[ATTR5]] {
+; CHECK-NEXT: call void [[FN]]() #[[ATTR5]]
; CHECK-NEXT: ret void
;
call void %fn() nofree
diff --git a/llvm/test/Transforms/FunctionAttrs/optnone.ll b/llvm/test/Transforms/FunctionAttrs/optnone.ll
index 9b5054c4eff96..7713c180d502c 100644
--- a/llvm/test/Transforms/FunctionAttrs/optnone.ll
+++ b/llvm/test/Transforms/FunctionAttrs/optnone.ll
@@ -1,24 +1,24 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-attributes --version 6
; RUN: opt < %s -passes=function-attrs -S | FileCheck %s
@x = global i32 0
define void @test_opt(ptr %p) {
-; CHECK-LABEL: @test_opt
-; CHECK: (ptr readnone captures(none) %p) #0 {
+; CHECK: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
+; CHECK-LABEL: define void @test_opt(
+; CHECK-SAME: ptr readnone captures(none) [[P:%.*]]) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: ret void
+;
ret void
}
define void @test_optnone(ptr %p) noinline optnone {
-; CHECK-LABEL: @test_optnone
-; CHECK: (ptr %p) #1 {
+; CHECK: Function Attrs: noinline optnone
+; CHECK-LABEL: define void @test_optnone(
+; CHECK-SAME: ptr [[P:%.*]]) #[[ATTR1:[0-9]+]] {
+; CHECK-NEXT: ret void
+;
ret void
}
declare i8 @strlen(ptr) noinline optnone
-; CHECK-LABEL: @strlen
-; CHECK: (ptr) #1
-
-; CHECK-LABEL: attributes #0
-; CHECK: = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) }
-; CHECK-LABEL: attributes #1
-; CHECK: = { noinline optnone }
diff --git a/llvm/test/Transforms/FunctionAttrs/out-of-bounds-iterator-bug.ll b/llvm/test/Transforms/FunctionAttrs/out-of-bounds-iterator-bug.ll
index 6acb0af13772a..c7b2c16eeda9b 100644
--- a/llvm/test/Transforms/FunctionAttrs/out-of-bounds-iterator-bug.ll
+++ b/llvm/test/Transforms/FunctionAttrs/out-of-bounds-iterator-bug.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=function-attrs -S < %s | FileCheck %s
; This checks for a previously existing iterator wraparound bug in
@@ -7,8 +8,16 @@ declare void @llvm.va_start(ptr)
declare void @llvm.va_end(ptr)
define void @va_func(ptr readonly %b, ...) readonly nounwind willreturn {
-; CHECK-LABEL: define void @va_func(ptr readonly captures(none) %b, ...)
- entry:
+; CHECK-LABEL: define void @va_func(
+; CHECK-SAME: ptr readonly captures(none) [[B:%.*]], ...) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[VALIST:%.*]] = alloca i8, align 1
+; CHECK-NEXT: call void @llvm.va_start.p0(ptr [[VALIST]])
+; CHECK-NEXT: call void @llvm.va_end.p0(ptr [[VALIST]])
+; CHECK-NEXT: [[X:%.*]] = call i32 @caller(ptr [[B]])
+; CHECK-NEXT: ret void
+;
+ entry:
%valist = alloca i8
call void @llvm.va_start(ptr %valist)
call void @llvm.va_end(ptr %valist)
@@ -17,15 +26,28 @@ define void @va_func(ptr readonly %b, ...) readonly nounwind willreturn {
}
define i32 @caller(ptr %x) {
-; CHECK-LABEL: define noundef i32 @caller(ptr readonly captures(address) %x)
- entry:
+; CHECK-LABEL: define noundef i32 @caller(
+; CHECK-SAME: ptr readonly captures(address) [[X:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: call void (ptr, ...) @va_func(ptr null, i32 0, i32 0, i32 0, ptr [[X]])
+; CHECK-NEXT: ret i32 42
+;
+ entry:
call void(ptr,...) @va_func(ptr null, i32 0, i32 0, i32 0, ptr %x)
ret i32 42
}
define void @va_func2(ptr readonly %b, ...) {
-; CHECK-LABEL: define void @va_func2(ptr readonly captures(address) %b, ...)
- entry:
+; CHECK-LABEL: define void @va_func2(
+; CHECK-SAME: ptr readonly captures(address) [[B:%.*]], ...) #[[ATTR1:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[VALIST:%.*]] = alloca i8, align 1
+; CHECK-NEXT: call void @llvm.va_start.p0(ptr [[VALIST]])
+; CHECK-NEXT: call void @llvm.va_end.p0(ptr [[VALIST]])
+; CHECK-NEXT: [[X:%.*]] = call i32 @caller(ptr [[B]])
+; CHECK-NEXT: ret void
+;
+ entry:
%valist = alloca i8
call void @llvm.va_start(ptr %valist)
call void @llvm.va_end(ptr %valist)
@@ -34,8 +56,13 @@ define void @va_func2(ptr readonly %b, ...) {
}
define i32 @caller2(ptr %x, ptr %y) {
-; CHECK-LABEL: define noundef i32 @caller2(ptr readonly captures(address) %x, ptr %y)
- entry:
+; CHECK-LABEL: define noundef i32 @caller2(
+; CHECK-SAME: ptr readonly captures(address) [[X:%.*]], ptr [[Y:%.*]]) #[[ATTR1]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: call void (ptr, ...) @va_func2(ptr [[X]], i32 0, i32 0, i32 0, ptr [[Y]])
+; CHECK-NEXT: ret i32 42
+;
+ entry:
call void(ptr,...) @va_func2(ptr %x, i32 0, i32 0, i32 0, ptr %y)
ret i32 42
}
More information about the llvm-commits
mailing list