[clang] [clang][P2719] Relax requirements for matching operator new and delete (PR #195779)

via cfe-commits cfe-commits at lists.llvm.org
Mon May 4 20:04:16 PDT 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results

* 53774 tests passed
* 1178 tests skipped
* 3 tests failed

## Failed Tests
(click on a test name to see its output)

### Clang
<details>
<summary>Clang.SemaCXX/type-aware-class-scoped-mismatched-constraints.cpp</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\clang.exe -cc1 -internal-isystem C:\_work\llvm-project\llvm-project\build\lib\clang\23\include -nostdsysteminc -triple arm64-apple-macosx -fsyntax-only -verify C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp -std=c++26 -Wno-ext-cxx-type-aware-allocators -fexceptions -fcxx-exceptions    -fsized-deallocation    -faligned-allocation -Wno-non-c-typedef-for-linkage -DDEFAULT_DELETE=1
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\clang.exe' -cc1 -internal-isystem 'C:\_work\llvm-project\llvm-project\build\lib\clang\23\include' -nostdsysteminc -triple arm64-apple-macosx -fsyntax-only -verify 'C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp' -std=c++26 -Wno-ext-cxx-type-aware-allocators -fexceptions -fcxx-exceptions -fsized-deallocation -faligned-allocation -Wno-non-c-typedef-for-linkage -DDEFAULT_DELETE=1
# .---command stderr------------
# | error: 'expected-error' diagnostics expected but not seen: 
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 98 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:99): type aware 'operator new' requires a matching type aware 'operator delete' to be declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 102 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:103): type aware 'operator delete' requires a matching type aware 'operator new' to be declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 107 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:108): type aware 'operator new' requires a matching type aware 'operator delete' to be declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 112 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:113): type aware 'operator new' requires a matching type aware 'operator delete' to be declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 198 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:199): type aware 'operator new' requires a matching type aware placement 'operator delete' to be declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 235 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:236): type aware 'operator new' requires a matching type aware 'operator delete' to be declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 240 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:241): type aware 'operator delete' requires a matching type aware 'operator new' to be declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 249 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:250): type aware 'operator new' requires a matching type aware 'operator delete' to be declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 253 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:254): type aware 'operator delete' requires a matching type aware 'operator new' to be declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 258 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:259): type aware 'operator new' requires a matching type aware placement 'operator delete' to be declared in the same scope
# | error: 'expected-error' diagnostics seen but not expected: 
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 91: type aware 'operator new' requires an requires a matching cleanup 'operator delete' declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 98: type aware 'operator new' requires an requires a matching cleanup 'operator delete' declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 161: type aware 'operator new' requires an requires a matching cleanup 'operator delete' declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 168: type aware 'operator new' requires an requires a matching cleanup 'operator delete' declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 192: type aware 'operator new' requires an requires a matching cleanup 'operator delete' declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 198: type aware 'operator new' requires an requires a matching placement cleanup 'operator delete' declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 235: type aware 'operator new' requires an requires a matching cleanup 'operator delete' declared in the same scope
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 258: type aware 'operator new' requires an requires a matching placement cleanup 'operator delete'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 267: use of undeclared identifier 'UntypedDelete'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 268: use of undeclared identifier 'UntypedDelete'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 269: use of undeclared identifier 'UntypedDelete'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 273: no matching function for call to 'operator new'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 274: no suitable member 'operator delete' in 'NonPlacementTypedDeleteIsAnOption'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 279: use of undeclared identifier 'UntypedDelete'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 280: use of undeclared identifier 'UntypedDelete'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 285: no matching function for call to 'operator new'
# | error: 'expected-note' diagnostics expected but not seen: 
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 44 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:104): type aware 'operator delete' declared here in 'Invalid4'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 15 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:105): non-type aware 'operator new' declared here in the global namespace
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 34 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:109): type aware 'operator new' declared here in 'Invalid2'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 44 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:110): type aware 'operator delete' declared here in 'Invalid4'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 34 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:114): type aware 'operator new' declared here in 'Invalid2'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 44 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:115): type aware 'operator delete' declared here in 'Invalid4'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 212 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:243): type aware 'operator delete' declared here in 'AnonymousClass2'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 15 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:244): non-type aware 'operator new' declared here in the global namespace
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 230 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:251): type aware 'operator new' declared here in the global namespace
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 231 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:255): type aware 'operator delete' declared here
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 15 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:256): non-type aware 'operator new' declared here in the global namespace
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 20 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp:261): non-type aware 'operator delete' declared here in the global namespace
# | error: 'expected-note' diagnostics seen but not expected: 
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 81: type aware 'operator new' declared here in 'TestClass1'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 129: type aware 'operator new' declared here in 'Baseclass2'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 150: type aware 'operator new' declared here in 'Subclass3_2'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 178: type aware 'operator new' declared here in 'InvalidConstrainedOperator<float>'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-class-scoped-mismatched-constraints.cpp Line 269: member 'operator delete' declared here
# | 43 errors generated.
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>Clang.SemaCXX/type-aware-coroutines.cpp</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\clang.exe -cc1 -internal-isystem C:\_work\llvm-project\llvm-project\build\lib\clang\23\include -nostdsysteminc -triple arm64-apple-macosx -fsyntax-only -verify C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-coroutines.cpp -std=c++26 -Wno-ext-cxx-type-aware-allocators -fcoroutines -fexceptions -Wall -Wpedantic
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\clang.exe' -cc1 -internal-isystem 'C:\_work\llvm-project\llvm-project\build\lib\clang\23\include' -nostdsysteminc -triple arm64-apple-macosx -fsyntax-only -verify 'C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-coroutines.cpp' -std=c++26 -Wno-ext-cxx-type-aware-allocators -fcoroutines -fexceptions -Wall -Wpedantic
# .---command stderr------------
# | error: 'expected-error' diagnostics expected but not seen: 
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-coroutines.cpp Line 48 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-coroutines.cpp:49): declaration of type aware 'operator new' in 'resumable3::promise_type' must have an 'operator delete'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-coroutines.cpp Line 64 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-coroutines.cpp:65): declaration of type aware 'operator delete' in 'resumable4::promise_type' must have an 'operator new'
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-coroutines.cpp Line 79 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-coroutines.cpp:80): declaration of type aware 'operator delete' in 'resumable5::promise_type' must have an 'operator new'
# | error: 'expected-note' diagnostics expected but not seen: 
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-coroutines.cpp Line 52 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-coroutines.cpp:50): unmatched type aware 'operator new' declared here
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-coroutines.cpp Line 68 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-coroutines.cpp:66): unmatched type aware 'operator delete' declared here
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-coroutines.cpp Line 84 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-coroutines.cpp:81): unmatched type aware 'operator delete' declared here
# | 6 errors generated.
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>Clang.SemaCXX/type-aware-placement-operators.cpp</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\clang.exe -cc1 -internal-isystem C:\_work\llvm-project\llvm-project\build\lib\clang\23\include -nostdsysteminc -fsyntax-only -verify C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-placement-operators.cpp -std=c++26 -Wno-ext-cxx-type-aware-allocators -fexceptions -fcxx-exceptions    -fsized-deallocation    -faligned-allocation
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\clang.exe' -cc1 -internal-isystem 'C:\_work\llvm-project\llvm-project\build\lib\clang\23\include' -nostdsysteminc -fsyntax-only -verify 'C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-placement-operators.cpp' -std=c++26 -Wno-ext-cxx-type-aware-allocators -fexceptions -fcxx-exceptions -fsized-deallocation -faligned-allocation
# .---command stderr------------
# | error: 'expected-error' diagnostics expected but not seen: 
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-placement-operators.cpp Line 69 (directive at C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-placement-operators.cpp:70): type aware 'operator new' requires a matching type aware placement 'operator delete' to be declared in the same scope
# | error: 'expected-error' diagnostics seen but not expected: 
# |   File C:\_work\llvm-project\llvm-project\clang\test\SemaCXX\type-aware-placement-operators.cpp Line 69: type aware 'operator new' requires an requires a matching placement cleanup 'operator delete' declared in the same scope
# | 2 errors generated.
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.

https://github.com/llvm/llvm-project/pull/195779


More information about the cfe-commits mailing list