[clang] [clang][win] MSVC-compat: Use `__global_delete` wrapper in deleting destructors instead of directly referencing `::operator delete` (PR #188372)
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 30 08:15:04 PDT 2026
================
@@ -452,6 +452,11 @@ Windows Support
- Clang now defines the ``_MSVC_TRADITIONAL`` macro as ``1`` when emulating MSVC
19.15 (Visual Studio 2017 version 15.8) and later. (#GH47114)
+- In MSVC compatibility mode, scalar and vector deleting destructors now call
----------------
AaronBallman wrote:
But this does break ABI, doesn't it? From a comment elsewhere:
> So it would be:
> | Code Provides | Old | New |
> |--|--|--|
> | `::operator delete` + `__global_delete` (common case) | Calls `__global_delete` -> `::operator new` | Calls `::operator new` |
> | `__global_delete` only (kernel-mode) | Calls `__global_delete` | Calls `__global_delete` |
> | `::operator new` only (non-MSVC CRT) | Calls `__empty_global_delete` and leaks | > Calls `::operator new` |
> | Nothing | Calls `__empty_global_delete` and leaks | Linker error |
https://github.com/llvm/llvm-project/pull/188372
More information about the cfe-commits
mailing list