https://github.com/melver updated 
https://github.com/llvm/llvm-project/pull/156839

>From b3653330c2c39ebaa094670f11afb0f9d36b9de2 Mon Sep 17 00:00:00 2001
From: Marco Elver <[email protected]>
Date: Thu, 4 Sep 2025 12:07:26 +0200
Subject: [PATCH 1/2] fixup! Insert AllocToken into index.rst

Created using spr 1.3.8-beta.1
---
 clang/docs/index.rst | 1 +
 1 file changed, 1 insertion(+)

diff --git a/clang/docs/index.rst b/clang/docs/index.rst
index be654af57f890..aa2b3a73dc11b 100644
--- a/clang/docs/index.rst
+++ b/clang/docs/index.rst
@@ -40,6 +40,7 @@ Using Clang as a Compiler
    SanitizerCoverage
    SanitizerStats
    SanitizerSpecialCaseList
+   AllocToken
    BoundsSafety
    BoundsSafetyAdoptionGuide
    BoundsSafetyImplPlans

>From 8dec1a6b643bb9e019007ce5acee6a1d5b5c18d6 Mon Sep 17 00:00:00 2001
From: Marco Elver <[email protected]>
Date: Thu, 2 Oct 2025 19:04:38 +0200
Subject: [PATCH 2/2] fixup! switch Clang tests back to manually written

Created using spr 1.3.8-beta.1
---
 clang/test/CodeGen/alloc-token-lower.c |  50 +-----
 clang/test/CodeGen/alloc-token.c       |  33 +---
 clang/test/CodeGenCXX/alloc-token.cpp  | 217 ++++---------------------
 3 files changed, 44 insertions(+), 256 deletions(-)

diff --git a/clang/test/CodeGen/alloc-token-lower.c 
b/clang/test/CodeGen/alloc-token-lower.c
index 722fd121440e4..75197bb3dbd44 100644
--- a/clang/test/CodeGen/alloc-token-lower.c
+++ b/clang/test/CodeGen/alloc-token-lower.c
@@ -1,58 +1,22 @@
-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py 
UTC_ARGS: --version 6
-//
 // Test optimization pipelines do not interfere with AllocToken lowering, and 
we
 // pass on function attributes correctly.
 //
-// RUN: %clang_cc1     -fsanitize=alloc-token -triple x86_64-linux-gnu 
-emit-llvm %s -o - | FileCheck --check-prefix=CHECK-O0 %s
-// RUN: %clang_cc1 -O1 -fsanitize=alloc-token -triple x86_64-linux-gnu 
-emit-llvm %s -o - | FileCheck --check-prefix=CHECK-O1 %s
-// RUN: %clang_cc1 -O2 -fsanitize=alloc-token -triple x86_64-linux-gnu 
-emit-llvm %s -o - | FileCheck --check-prefix=CHECK-O2 %s
+// RUN: %clang_cc1     -fsanitize=alloc-token -triple x86_64-linux-gnu 
-emit-llvm %s -o - | FileCheck %s
+// RUN: %clang_cc1 -O1 -fsanitize=alloc-token -triple x86_64-linux-gnu 
-emit-llvm %s -o - | FileCheck %s
+// RUN: %clang_cc1 -O2 -fsanitize=alloc-token -triple x86_64-linux-gnu 
-emit-llvm %s -o - | FileCheck %s
 
 typedef __typeof(sizeof(int)) size_t;
 
 void *malloc(size_t size);
 
-// CHECK-O0-LABEL: define dso_local ptr @test_malloc(
-// CHECK-O0-SAME: ) #[[ATTR0:[0-9]+]] {
-// CHECK-O0-NEXT:  [[ENTRY:.*:]]
-// CHECK-O0-NEXT:    [[TMP0:%.*]] = call ptr @__alloc_token_malloc(i64 noundef 
4, i64 0) #[[ATTR3:[0-9]+]]
-// CHECK-O0-NEXT:    ret ptr [[TMP0]]
-//
-// CHECK-O1-LABEL: define dso_local noalias noundef ptr @test_malloc(
-// CHECK-O1-SAME: ) local_unnamed_addr #[[ATTR0:[0-9]+]] {
-// CHECK-O1-NEXT:  [[ENTRY:.*:]]
-// CHECK-O1-NEXT:    [[TMP0:%.*]] = tail call dereferenceable_or_null(4) ptr 
@__alloc_token_malloc(i64 noundef 4, i64 0) #[[ATTR3:[0-9]+]]
-// CHECK-O1-NEXT:    ret ptr [[TMP0]]
-//
-// CHECK-O2-LABEL: define dso_local noalias noundef ptr @test_malloc(
-// CHECK-O2-SAME: ) local_unnamed_addr #[[ATTR0:[0-9]+]] {
-// CHECK-O2-NEXT:  [[ENTRY:.*:]]
-// CHECK-O2-NEXT:    [[TMP0:%.*]] = tail call dereferenceable_or_null(4) ptr 
@__alloc_token_malloc(i64 noundef 4, i64 0) #[[ATTR3:[0-9]+]]
-// CHECK-O2-NEXT:    ret ptr [[TMP0]]
-//
+// CHECK-LABEL: @test_malloc(
+// CHECK: call{{.*}} ptr @__alloc_token_malloc(i64 noundef 4, i64 0)
 void *test_malloc() {
   return malloc(sizeof(int));
 }
 
-// CHECK-O0-LABEL: define dso_local ptr @no_sanitize_malloc(
-// CHECK-O0-SAME: i64 noundef [[SIZE:%.*]]) #[[ATTR2:[0-9]+]] {
-// CHECK-O0-NEXT:  [[ENTRY:.*:]]
-// CHECK-O0-NEXT:    [[SIZE_ADDR:%.*]] = alloca i64, align 8
-// CHECK-O0-NEXT:    store i64 [[SIZE]], ptr [[SIZE_ADDR]], align 8
-// CHECK-O0-NEXT:    [[CALL:%.*]] = call ptr @malloc(i64 noundef 4) #[[ATTR3]]
-// CHECK-O0-NEXT:    ret ptr [[CALL]]
-//
-// CHECK-O1-LABEL: define dso_local noalias noundef ptr @no_sanitize_malloc(
-// CHECK-O1-SAME: i64 noundef [[SIZE:%.*]]) local_unnamed_addr 
#[[ATTR2:[0-9]+]] {
-// CHECK-O1-NEXT:  [[ENTRY:.*:]]
-// CHECK-O1-NEXT:    [[CALL:%.*]] = tail call dereferenceable_or_null(4) ptr 
@malloc(i64 noundef 4) #[[ATTR3]]
-// CHECK-O1-NEXT:    ret ptr [[CALL]]
-//
-// CHECK-O2-LABEL: define dso_local noalias noundef ptr @no_sanitize_malloc(
-// CHECK-O2-SAME: i64 noundef [[SIZE:%.*]]) local_unnamed_addr 
#[[ATTR2:[0-9]+]] {
-// CHECK-O2-NEXT:  [[ENTRY:.*:]]
-// CHECK-O2-NEXT:    [[CALL:%.*]] = tail call dereferenceable_or_null(4) ptr 
@malloc(i64 noundef 4) #[[ATTR3]]
-// CHECK-O2-NEXT:    ret ptr [[CALL]]
-//
+// CHECK-LABEL: @no_sanitize_malloc(
+// CHECK: call{{.*}} ptr @malloc(i64 noundef 4)
 void *no_sanitize_malloc(size_t size) 
__attribute__((no_sanitize("alloc-token"))) {
   return malloc(sizeof(int));
 }
diff --git a/clang/test/CodeGen/alloc-token.c b/clang/test/CodeGen/alloc-token.c
index ec789c069f985..d1160adc060ba 100644
--- a/clang/test/CodeGen/alloc-token.c
+++ b/clang/test/CodeGen/alloc-token.c
@@ -1,4 +1,3 @@
-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py 
UTC_ARGS: --version 6
 // RUN: %clang_cc1 -fsanitize=alloc-token -triple x86_64-linux-gnu -emit-llvm 
-disable-llvm-passes %s -o - | FileCheck %s
 
 typedef __typeof(sizeof(int)) size_t;
@@ -16,29 +15,15 @@ int posix_memalign(void **memptr, size_t alignment, size_t 
size);
 void *sink;
 
 // CHECK-LABEL: define dso_local void @test_malloc_like(
-// CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
-// CHECK-NEXT:  [[ENTRY:.*:]]
-// CHECK-NEXT:    [[CALL:%.*]] = call ptr @malloc(i64 noundef 4) 
#[[ATTR5:[0-9]+]]
-// CHECK-NEXT:    store ptr [[CALL]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL1:%.*]] = call ptr @calloc(i64 noundef 3, i64 noundef 
4) #[[ATTR6:[0-9]+]]
-// CHECK-NEXT:    store ptr [[CALL1]], ptr @sink, align 8
-// CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr @sink, align 8
-// CHECK-NEXT:    [[CALL2:%.*]] = call ptr @realloc(ptr noundef [[TMP0]], i64 
noundef 8) #[[ATTR7:[0-9]+]]
-// CHECK-NEXT:    store ptr [[CALL2]], ptr @sink, align 8
-// CHECK-NEXT:    [[TMP1:%.*]] = load ptr, ptr @sink, align 8
-// CHECK-NEXT:    [[CALL3:%.*]] = call ptr @reallocarray(ptr noundef [[TMP1]], 
i64 noundef 5, i64 noundef 8)
-// CHECK-NEXT:    store ptr [[CALL3]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL4:%.*]] = call align 128 ptr @aligned_alloc(i64 
noundef 128, i64 noundef 1024) #[[ATTR7]]
-// CHECK-NEXT:    store ptr [[CALL4]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL5:%.*]] = call align 16 ptr @memalign(i64 noundef 16, 
i64 noundef 256) #[[ATTR7]]
-// CHECK-NEXT:    store ptr [[CALL5]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL6:%.*]] = call ptr @valloc(i64 noundef 4096)
-// CHECK-NEXT:    store ptr [[CALL6]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL7:%.*]] = call ptr @pvalloc(i64 noundef 8192)
-// CHECK-NEXT:    store ptr [[CALL7]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL8:%.*]] = call i32 @posix_memalign(ptr noundef @sink, 
i64 noundef 64, i64 noundef 4)
-// CHECK-NEXT:    ret void
-//
+// CHECK: call ptr @malloc(i64 noundef 4)
+// CHECK: call ptr @calloc(i64 noundef 3, i64 noundef 4)
+// CHECK: call ptr @realloc(ptr noundef {{.*}}, i64 noundef 8)
+// CHECK: call ptr @reallocarray(ptr noundef {{.*}}, i64 noundef 5, i64 
noundef 8)
+// CHECK: call align 128 ptr @aligned_alloc(i64 noundef 128, i64 noundef 1024)
+// CHECK: call align 16 ptr @memalign(i64 noundef 16, i64 noundef 256)
+// CHECK: call ptr @valloc(i64 noundef 4096)
+// CHECK: call ptr @pvalloc(i64 noundef 8192)
+// CHECK: call i32 @posix_memalign(ptr noundef @sink, i64 noundef 64, i64 
noundef 4)
 void test_malloc_like() {
   sink = malloc(sizeof(int));
   sink = calloc(3, sizeof(int));
diff --git a/clang/test/CodeGenCXX/alloc-token.cpp 
b/clang/test/CodeGenCXX/alloc-token.cpp
index 77efc6cf85ae1..52bad9c54fb3b 100644
--- a/clang/test/CodeGenCXX/alloc-token.cpp
+++ b/clang/test/CodeGenCXX/alloc-token.cpp
@@ -1,4 +1,3 @@
-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py 
UTC_ARGS: --version 5
 // RUN: %clang_cc1 -fsanitize=alloc-token -triple x86_64-linux-gnu -std=c++20 
-fexceptions -fcxx-exceptions -emit-llvm -disable-llvm-passes %s -o - | 
FileCheck %s
 
 #include "../Analysis/Inputs/system-header-simulator-cxx.h"
@@ -27,29 +26,15 @@ __sized_ptr_t __size_returning_new_aligned_hot_cold(size_t, 
std::align_val_t,  _
 void *sink; // prevent optimizations from removing the calls
 
 // CHECK-LABEL: define dso_local void @_Z16test_malloc_likev(
-// CHECK-SAME: ) #[[ATTR1:[0-9]+]] {
-// CHECK-NEXT:  [[ENTRY:.*:]]
-// CHECK-NEXT:    [[CALL:%.*]] = call ptr @malloc(i64 noundef 4) 
#[[ATTR10:[0-9]+]]
-// CHECK-NEXT:    store ptr [[CALL]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL1:%.*]] = call ptr @calloc(i64 noundef 3, i64 noundef 
4) #[[ATTR11:[0-9]+]]
-// CHECK-NEXT:    store ptr [[CALL1]], ptr @sink, align 8
-// CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr @sink, align 8
-// CHECK-NEXT:    [[CALL2:%.*]] = call ptr @realloc(ptr noundef [[TMP0]], i64 
noundef 8) #[[ATTR12:[0-9]+]]
-// CHECK-NEXT:    store ptr [[CALL2]], ptr @sink, align 8
-// CHECK-NEXT:    [[TMP1:%.*]] = load ptr, ptr @sink, align 8
-// CHECK-NEXT:    [[CALL3:%.*]] = call ptr @reallocarray(ptr noundef [[TMP1]], 
i64 noundef 5, i64 noundef 8)
-// CHECK-NEXT:    store ptr [[CALL3]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL4:%.*]] = call align 128 ptr @aligned_alloc(i64 
noundef 128, i64 noundef 1024) #[[ATTR12]]
-// CHECK-NEXT:    store ptr [[CALL4]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL5:%.*]] = call ptr @memalign(i64 noundef 16, i64 
noundef 256)
-// CHECK-NEXT:    store ptr [[CALL5]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL6:%.*]] = call ptr @valloc(i64 noundef 4096)
-// CHECK-NEXT:    store ptr [[CALL6]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL7:%.*]] = call ptr @pvalloc(i64 noundef 8192)
-// CHECK-NEXT:    store ptr [[CALL7]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL8:%.*]] = call i32 @posix_memalign(ptr noundef @sink, 
i64 noundef 64, i64 noundef 4)
-// CHECK-NEXT:    ret void
-//
+// CHECK: call ptr @malloc(i64 noundef 4)
+// CHECK: call ptr @calloc(i64 noundef 3, i64 noundef 4)
+// CHECK: call ptr @realloc(ptr noundef {{.*}}, i64 noundef 8)
+// CHECK: call ptr @reallocarray(ptr noundef {{.*}}, i64 noundef 5, i64 
noundef 8)
+// CHECK: call align 128 ptr @aligned_alloc(i64 noundef 128, i64 noundef 1024)
+// CHECK: call ptr @memalign(i64 noundef 16, i64 noundef 256)
+// CHECK: call ptr @valloc(i64 noundef 4096)
+// CHECK: call ptr @pvalloc(i64 noundef 8192)
+// CHECK: call i32 @posix_memalign(ptr noundef @sink, i64 noundef 64, i64 
noundef 4)
 void test_malloc_like() {
   sink = malloc(sizeof(int));
   sink = calloc(3, sizeof(int));
@@ -63,122 +48,50 @@ void test_malloc_like() {
 }
 
 // CHECK-LABEL: define dso_local void @_Z17test_operator_newv(
-// CHECK-SAME: ) #[[ATTR1]] {
-// CHECK-NEXT:  [[ENTRY:.*:]]
-// CHECK-NEXT:    [[CALL:%.*]] = call noalias noundef nonnull ptr @_Znwm(i64 
noundef 4) #[[ATTR13:[0-9]+]]
-// CHECK-NEXT:    store ptr [[CALL]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL1:%.*]] = call noalias noundef nonnull ptr @_Znwm(i64 
noundef 4) #[[ATTR10]]
-// CHECK-NEXT:    store ptr [[CALL1]], ptr @sink, align 8
-// CHECK-NEXT:    ret void
-//
+// CHECK: call noalias noundef nonnull ptr @_Znwm(i64 noundef 4)
+// CHECK: call noalias noundef nonnull ptr @_Znwm(i64 noundef 4)
 void test_operator_new() {
   sink = __builtin_operator_new(sizeof(int));
   sink = ::operator new(sizeof(int));
 }
 
 // CHECK-LABEL: define dso_local void @_Z25test_operator_new_nothrowv(
-// CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
-// CHECK-NEXT:  [[ENTRY:.*:]]
-// CHECK-NEXT:    [[CALL:%.*]] = call noalias noundef ptr 
@_ZnwmRKSt9nothrow_t(i64 noundef 4, ptr noundef nonnull align 1 
dereferenceable(1) @_ZSt7nothrow) #[[ATTR14:[0-9]+]]
-// CHECK-NEXT:    store ptr [[CALL]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL1:%.*]] = call noalias noundef ptr 
@_ZnwmRKSt9nothrow_t(i64 noundef 4, ptr noundef nonnull align 1 
dereferenceable(1) @_ZSt7nothrow) #[[ATTR15:[0-9]+]]
-// CHECK-NEXT:    store ptr [[CALL1]], ptr @sink, align 8
-// CHECK-NEXT:    ret void
-//
+// CHECK: call noalias noundef ptr @_ZnwmRKSt9nothrow_t(i64 noundef 4, ptr 
noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
+// CHECK: call noalias noundef ptr @_ZnwmRKSt9nothrow_t(i64 noundef 4, ptr 
noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow)
 void test_operator_new_nothrow() {
   sink = __builtin_operator_new(sizeof(int), std::nothrow);
   sink = ::operator new(sizeof(int), std::nothrow);
 }
 
 // CHECK-LABEL: define dso_local noundef ptr @_Z8test_newv(
-// CHECK-SAME: ) #[[ATTR1]] {
-// CHECK-NEXT:  [[ENTRY:.*:]]
-// CHECK-NEXT:    [[CALL:%.*]] = call noalias noundef nonnull ptr @_Znwm(i64 
noundef 4) #[[ATTR13]], !alloc_token [[META2:![0-9]+]]
-// CHECK-NEXT:    ret ptr [[CALL]]
-//
+// CHECK: call noalias noundef nonnull ptr @_Znwm(i64 noundef 4){{.*}} 
!alloc_token [[META_INT:![0-9]+]]
 int *test_new() {
   return new int;
 }
 
 // CHECK-LABEL: define dso_local noundef ptr @_Z14test_new_arrayv(
-// CHECK-SAME: ) #[[ATTR1]] {
-// CHECK-NEXT:  [[ENTRY:.*:]]
-// CHECK-NEXT:    [[CALL:%.*]] = call noalias noundef nonnull ptr @_Znam(i64 
noundef 40) #[[ATTR13]], !alloc_token [[META2]]
-// CHECK-NEXT:    ret ptr [[CALL]]
-//
+// CHECK: call noalias noundef nonnull ptr @_Znam(i64 noundef 40){{.*}} 
!alloc_token [[META_INT]]
 int *test_new_array() {
   return new int[10];
 }
 
 // CHECK-LABEL: define dso_local noundef ptr @_Z16test_new_nothrowv(
-// CHECK-SAME: ) #[[ATTR0]] {
-// CHECK-NEXT:  [[ENTRY:.*:]]
-// CHECK-NEXT:    [[CALL:%.*]] = call noalias noundef ptr 
@_ZnwmRKSt9nothrow_t(i64 noundef 4, ptr noundef nonnull align 1 
dereferenceable(1) @_ZSt7nothrow) #[[ATTR14]], !alloc_token [[META2]]
-// CHECK-NEXT:    ret ptr [[CALL]]
-//
+// CHECK: call noalias noundef ptr @_ZnwmRKSt9nothrow_t(i64 noundef 4, ptr 
noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow){{.*}} !alloc_token 
[[META_INT]]
 int *test_new_nothrow() {
   return new (std::nothrow) int;
 }
 
 // CHECK-LABEL: define dso_local noundef ptr @_Z22test_new_array_nothrowv(
-// CHECK-SAME: ) #[[ATTR0]] {
-// CHECK-NEXT:  [[ENTRY:.*:]]
-// CHECK-NEXT:    [[CALL:%.*]] = call noalias noundef ptr 
@_ZnamRKSt9nothrow_t(i64 noundef 40, ptr noundef nonnull align 1 
dereferenceable(1) @_ZSt7nothrow) #[[ATTR14]], !alloc_token [[META2]]
-// CHECK-NEXT:    ret ptr [[CALL]]
-//
+// CHECK: call noalias noundef ptr @_ZnamRKSt9nothrow_t(i64 noundef 40, ptr 
noundef nonnull align 1 dereferenceable(1) @_ZSt7nothrow){{.*}} !alloc_token 
[[META_INT]]
 int *test_new_array_nothrow() {
   return new (std::nothrow) int[10];
 }
 
 // CHECK-LABEL: define dso_local void @_Z23test_size_returning_newv(
-// CHECK-SAME: ) #[[ATTR1]] {
-// CHECK-NEXT:  [[ENTRY:.*:]]
-// CHECK-NEXT:    [[REF_TMP:%.*]] = alloca [[STRUCT___SIZED_PTR_T:%.*]], align 
8
-// CHECK-NEXT:    [[REF_TMP1:%.*]] = alloca [[STRUCT___SIZED_PTR_T]], align 8
-// CHECK-NEXT:    [[REF_TMP4:%.*]] = alloca [[STRUCT___SIZED_PTR_T]], align 8
-// CHECK-NEXT:    [[REF_TMP7:%.*]] = alloca [[STRUCT___SIZED_PTR_T]], align 8
-// CHECK-NEXT:    [[CALL:%.*]] = call { ptr, i64 } @__size_returning_new(i64 
noundef 8)
-// CHECK-NEXT:    [[TMP0:%.*]] = getelementptr inbounds nuw { ptr, i64 }, ptr 
[[REF_TMP]], i32 0, i32 0
-// CHECK-NEXT:    [[TMP1:%.*]] = extractvalue { ptr, i64 } [[CALL]], 0
-// CHECK-NEXT:    store ptr [[TMP1]], ptr [[TMP0]], align 8
-// CHECK-NEXT:    [[TMP2:%.*]] = getelementptr inbounds nuw { ptr, i64 }, ptr 
[[REF_TMP]], i32 0, i32 1
-// CHECK-NEXT:    [[TMP3:%.*]] = extractvalue { ptr, i64 } [[CALL]], 1
-// CHECK-NEXT:    store i64 [[TMP3]], ptr [[TMP2]], align 8
-// CHECK-NEXT:    [[P:%.*]] = getelementptr inbounds nuw 
[[STRUCT___SIZED_PTR_T]], ptr [[REF_TMP]], i32 0, i32 0
-// CHECK-NEXT:    [[TMP4:%.*]] = load ptr, ptr [[P]], align 8
-// CHECK-NEXT:    store ptr [[TMP4]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL2:%.*]] = call { ptr, i64 } 
@__size_returning_new_hot_cold(i64 noundef 8, i8 noundef zeroext 1)
-// CHECK-NEXT:    [[TMP5:%.*]] = getelementptr inbounds nuw { ptr, i64 }, ptr 
[[REF_TMP1]], i32 0, i32 0
-// CHECK-NEXT:    [[TMP6:%.*]] = extractvalue { ptr, i64 } [[CALL2]], 0
-// CHECK-NEXT:    store ptr [[TMP6]], ptr [[TMP5]], align 8
-// CHECK-NEXT:    [[TMP7:%.*]] = getelementptr inbounds nuw { ptr, i64 }, ptr 
[[REF_TMP1]], i32 0, i32 1
-// CHECK-NEXT:    [[TMP8:%.*]] = extractvalue { ptr, i64 } [[CALL2]], 1
-// CHECK-NEXT:    store i64 [[TMP8]], ptr [[TMP7]], align 8
-// CHECK-NEXT:    [[P3:%.*]] = getelementptr inbounds nuw 
[[STRUCT___SIZED_PTR_T]], ptr [[REF_TMP1]], i32 0, i32 0
-// CHECK-NEXT:    [[TMP9:%.*]] = load ptr, ptr [[P3]], align 8
-// CHECK-NEXT:    store ptr [[TMP9]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL5:%.*]] = call { ptr, i64 } 
@__size_returning_new_aligned(i64 noundef 8, i64 noundef 32)
-// CHECK-NEXT:    [[TMP10:%.*]] = getelementptr inbounds nuw { ptr, i64 }, ptr 
[[REF_TMP4]], i32 0, i32 0
-// CHECK-NEXT:    [[TMP11:%.*]] = extractvalue { ptr, i64 } [[CALL5]], 0
-// CHECK-NEXT:    store ptr [[TMP11]], ptr [[TMP10]], align 8
-// CHECK-NEXT:    [[TMP12:%.*]] = getelementptr inbounds nuw { ptr, i64 }, ptr 
[[REF_TMP4]], i32 0, i32 1
-// CHECK-NEXT:    [[TMP13:%.*]] = extractvalue { ptr, i64 } [[CALL5]], 1
-// CHECK-NEXT:    store i64 [[TMP13]], ptr [[TMP12]], align 8
-// CHECK-NEXT:    [[P6:%.*]] = getelementptr inbounds nuw 
[[STRUCT___SIZED_PTR_T]], ptr [[REF_TMP4]], i32 0, i32 0
-// CHECK-NEXT:    [[TMP14:%.*]] = load ptr, ptr [[P6]], align 8
-// CHECK-NEXT:    store ptr [[TMP14]], ptr @sink, align 8
-// CHECK-NEXT:    [[CALL8:%.*]] = call { ptr, i64 } 
@__size_returning_new_aligned_hot_cold(i64 noundef 8, i64 noundef 32, i8 
noundef zeroext 1)
-// CHECK-NEXT:    [[TMP15:%.*]] = getelementptr inbounds nuw { ptr, i64 }, ptr 
[[REF_TMP7]], i32 0, i32 0
-// CHECK-NEXT:    [[TMP16:%.*]] = extractvalue { ptr, i64 } [[CALL8]], 0
-// CHECK-NEXT:    store ptr [[TMP16]], ptr [[TMP15]], align 8
-// CHECK-NEXT:    [[TMP17:%.*]] = getelementptr inbounds nuw { ptr, i64 }, ptr 
[[REF_TMP7]], i32 0, i32 1
-// CHECK-NEXT:    [[TMP18:%.*]] = extractvalue { ptr, i64 } [[CALL8]], 1
-// CHECK-NEXT:    store i64 [[TMP18]], ptr [[TMP17]], align 8
-// CHECK-NEXT:    [[P9:%.*]] = getelementptr inbounds nuw 
[[STRUCT___SIZED_PTR_T]], ptr [[REF_TMP7]], i32 0, i32 0
-// CHECK-NEXT:    [[TMP19:%.*]] = load ptr, ptr [[P9]], align 8
-// CHECK-NEXT:    store ptr [[TMP19]], ptr @sink, align 8
-// CHECK-NEXT:    ret void
-//
+// CHECK: call { ptr, i64 } @__size_returning_new(i64 noundef 8)
+// CHECK: call { ptr, i64 } @__size_returning_new_hot_cold(i64 noundef 8, i8 
noundef zeroext 1)
+// CHECK: call { ptr, i64 } @__size_returning_new_aligned(i64 noundef 8, i64 
noundef 32)
+// CHECK: call { ptr, i64 } @__size_returning_new_aligned_hot_cold(i64 noundef 
8, i64 noundef 32, i8 noundef zeroext 1)
 void test_size_returning_new() {
   sink = __size_returning_new(sizeof(long)).p;
   sink = __size_returning_new_hot_cold(sizeof(long), __hot_cold_t{1}).p;
@@ -196,45 +109,8 @@ class TestClass {
 void may_throw();
 
 // CHECK-LABEL: define dso_local noundef ptr @_Z27test_exception_handling_newv(
-// CHECK-SAME: ) #[[ATTR1]] personality ptr @__gxx_personality_v0 {
-// CHECK-NEXT:  [[ENTRY:.*:]]
-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca ptr, align 8
-// CHECK-NEXT:    [[OBJ:%.*]] = alloca ptr, align 8
-// CHECK-NEXT:    [[EXN_SLOT:%.*]] = alloca ptr, align 8
-// CHECK-NEXT:    [[EHSELECTOR_SLOT:%.*]] = alloca i32, align 4
-// CHECK-NEXT:    [[CALL:%.*]] = invoke noalias noundef nonnull ptr @_Znwm(i64 
noundef 72) #[[ATTR13]]
-// CHECK-NEXT:            to label %[[INVOKE_CONT:.*]] unwind label 
%[[LPAD:.*]], !alloc_token [[META3:![0-9]+]]
-// CHECK:       [[INVOKE_CONT]]:
-// CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 16 [[CALL]], i8 0, 
i64 72, i1 false)
-// CHECK-NEXT:    call void @_ZN9TestClassC1Ev(ptr noundef nonnull align 8 
dereferenceable(72) [[CALL]]) #[[ATTR16:[0-9]+]]
-// CHECK-NEXT:    store ptr [[CALL]], ptr [[OBJ]], align 8
-// CHECK-NEXT:    invoke void @_Z9may_throwv()
-// CHECK-NEXT:            to label %[[INVOKE_CONT1:.*]] unwind label %[[LPAD]]
-// CHECK:       [[INVOKE_CONT1]]:
-// CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[OBJ]], align 8
-// CHECK-NEXT:    store ptr [[TMP0]], ptr [[RETVAL]], align 8
-// CHECK-NEXT:    br label %[[RETURN:.*]]
-// CHECK:       [[LPAD]]:
-// CHECK-NEXT:    [[TMP1:%.*]] = landingpad { ptr, i32 }
-// CHECK-NEXT:            catch ptr null
-// CHECK-NEXT:    [[TMP2:%.*]] = extractvalue { ptr, i32 } [[TMP1]], 0
-// CHECK-NEXT:    store ptr [[TMP2]], ptr [[EXN_SLOT]], align 8
-// CHECK-NEXT:    [[TMP3:%.*]] = extractvalue { ptr, i32 } [[TMP1]], 1
-// CHECK-NEXT:    store i32 [[TMP3]], ptr [[EHSELECTOR_SLOT]], align 4
-// CHECK-NEXT:    br label %[[CATCH:.*]]
-// CHECK:       [[CATCH]]:
-// CHECK-NEXT:    [[EXN:%.*]] = load ptr, ptr [[EXN_SLOT]], align 8
-// CHECK-NEXT:    [[TMP4:%.*]] = call ptr @__cxa_begin_catch(ptr [[EXN]]) 
#[[ATTR16]]
-// CHECK-NEXT:    store ptr null, ptr [[RETVAL]], align 8
-// CHECK-NEXT:    call void @__cxa_end_catch()
-// CHECK-NEXT:    br label %[[RETURN]]
-// CHECK:       [[TRY_CONT:.*:]]
-// CHECK-NEXT:    call void @llvm.trap()
-// CHECK-NEXT:    unreachable
-// CHECK:       [[RETURN]]:
-// CHECK-NEXT:    [[TMP5:%.*]] = load ptr, ptr [[RETVAL]], align 8
-// CHECK-NEXT:    ret ptr [[TMP5]]
-//
+// CHECK: invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 72)
+// CHECK-NEXT: !alloc_token [[META_TESTCLASS:![0-9]+]]
 TestClass *test_exception_handling_new() {
   try {
     TestClass *obj = new TestClass();
@@ -246,20 +122,7 @@ TestClass *test_exception_handling_new() {
 }
 
 // CHECK-LABEL: define dso_local noundef ptr @_Z14test_new_classv(
-// CHECK-SAME: ) #[[ATTR1]] {
-// CHECK-NEXT:  [[ENTRY:.*:]]
-// CHECK-NEXT:    [[OBJ:%.*]] = alloca ptr, align 8
-// CHECK-NEXT:    [[CALL:%.*]] = call noalias noundef nonnull ptr @_Znwm(i64 
noundef 72) #[[ATTR13]], !alloc_token [[META3]]
-// CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 16 [[CALL]], i8 0, 
i64 72, i1 false)
-// CHECK-NEXT:    call void @_ZN9TestClassC1Ev(ptr noundef nonnull align 8 
dereferenceable(72) [[CALL]]) #[[ATTR16]]
-// CHECK-NEXT:    store ptr [[CALL]], ptr [[OBJ]], align 8
-// CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[OBJ]], align 8
-// CHECK-NEXT:    [[DATA:%.*]] = getelementptr inbounds nuw 
[[CLASS_TESTCLASS:%.*]], ptr [[TMP0]], i32 0, i32 1
-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [16 x i32], ptr 
[[DATA]], i64 0, i64 0
-// CHECK-NEXT:    store i32 42, ptr [[ARRAYIDX]], align 8
-// CHECK-NEXT:    [[TMP1:%.*]] = load ptr, ptr [[OBJ]], align 8
-// CHECK-NEXT:    ret ptr [[TMP1]]
-//
+// CHECK: call noalias noundef nonnull ptr @_Znwm(i64 noundef 72){{.*}} 
!alloc_token [[META_TESTCLASS]]
 TestClass *test_new_class() {
   TestClass *obj = new TestClass();
   obj->data[0] = 42;
@@ -267,36 +130,12 @@ TestClass *test_new_class() {
 }
 
 // CHECK-LABEL: define dso_local noundef ptr @_Z20test_new_class_arrayv(
-// CHECK-SAME: ) #[[ATTR1]] {
-// CHECK-NEXT:  [[ENTRY:.*]]:
-// CHECK-NEXT:    [[ARR:%.*]] = alloca ptr, align 8
-// CHECK-NEXT:    [[CALL:%.*]] = call noalias noundef nonnull ptr @_Znam(i64 
noundef 728) #[[ATTR13]], !alloc_token [[META3]]
-// CHECK-NEXT:    store i64 10, ptr [[CALL]], align 16
-// CHECK-NEXT:    [[TMP0:%.*]] = getelementptr inbounds i8, ptr [[CALL]], i64 8
-// CHECK-NEXT:    [[ARRAYCTOR_END:%.*]] = getelementptr inbounds 
[[CLASS_TESTCLASS:%.*]], ptr [[TMP0]], i64 10
-// CHECK-NEXT:    br label %[[ARRAYCTOR_LOOP:.*]]
-// CHECK:       [[ARRAYCTOR_LOOP]]:
-// CHECK-NEXT:    [[ARRAYCTOR_CUR:%.*]] = phi ptr [ [[TMP0]], %[[ENTRY]] ], [ 
[[ARRAYCTOR_NEXT:%.*]], %[[ARRAYCTOR_LOOP]] ]
-// CHECK-NEXT:    call void @_ZN9TestClassC1Ev(ptr noundef nonnull align 8 
dereferenceable(72) [[ARRAYCTOR_CUR]]) #[[ATTR16]]
-// CHECK-NEXT:    [[ARRAYCTOR_NEXT]] = getelementptr inbounds 
[[CLASS_TESTCLASS]], ptr [[ARRAYCTOR_CUR]], i64 1
-// CHECK-NEXT:    [[ARRAYCTOR_DONE:%.*]] = icmp eq ptr [[ARRAYCTOR_NEXT]], 
[[ARRAYCTOR_END]]
-// CHECK-NEXT:    br i1 [[ARRAYCTOR_DONE]], label %[[ARRAYCTOR_CONT:.*]], 
label %[[ARRAYCTOR_LOOP]]
-// CHECK:       [[ARRAYCTOR_CONT]]:
-// CHECK-NEXT:    store ptr [[TMP0]], ptr [[ARR]], align 8
-// CHECK-NEXT:    [[TMP1:%.*]] = load ptr, ptr [[ARR]], align 8
-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
[[CLASS_TESTCLASS]], ptr [[TMP1]], i64 0
-// CHECK-NEXT:    [[DATA:%.*]] = getelementptr inbounds nuw 
[[CLASS_TESTCLASS]], ptr [[ARRAYIDX]], i32 0, i32 1
-// CHECK-NEXT:    [[ARRAYIDX1:%.*]] = getelementptr inbounds [16 x i32], ptr 
[[DATA]], i64 0, i64 0
-// CHECK-NEXT:    store i32 123, ptr [[ARRAYIDX1]], align 8
-// CHECK-NEXT:    [[TMP2:%.*]] = load ptr, ptr [[ARR]], align 8
-// CHECK-NEXT:    ret ptr [[TMP2]]
-//
+// CHECK: call noalias noundef nonnull ptr @_Znam(i64 noundef 728){{.*}} 
!alloc_token [[META_TESTCLASS]]
 TestClass *test_new_class_array() {
   TestClass* arr = new TestClass[10];
   arr[0].data[0] = 123;
   return arr;
 }
-//.
-// CHECK: [[META2]] = !{!"int"}
-// CHECK: [[META3]] = !{!"TestClass"}
-//.
+
+// CHECK: [[META_INT]] = !{!"int"}
+// CHECK: [[META_TESTCLASS]] = !{!"TestClass"}

_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to