[llvm] Add RPMALLOC TLS support for Windows (PR #171465)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 10 06:46:01 PST 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff origin/main HEAD --extensions c -- llvm/lib/Support/rpmalloc/rpmalloc.c --diff_from_common_commit
``````````
:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/llvm/lib/Support/rpmalloc/rpmalloc.c b/llvm/lib/Support/rpmalloc/rpmalloc.c
index fec33f33a..72ae66814 100644
--- a/llvm/lib/Support/rpmalloc/rpmalloc.c
+++ b/llvm/lib/Support/rpmalloc/rpmalloc.c
@@ -968,49 +968,49 @@ static void _rpmalloc_spin(void) {
#endif
}
-#if defined(_WIN32) && (!defined(BUILD_DYNAMIC_LINK) || !BUILD_DYNAMIC_LINK)
-
-static void NTAPI RPMallocTlsOnThreadExit(PVOID module, DWORD reason,
- PVOID reserved) {
- switch (reason) {
- case DLL_PROCESS_ATTACH:
- break;
- case DLL_PROCESS_DETACH:
- rpmalloc_finalize();
- break;
- case DLL_THREAD_ATTACH:
- break;
- case DLL_THREAD_DETACH:
- rpmalloc_thread_finalize(1);
- break;
- }
-}
-
-#ifdef _WIN64
-#pragma comment(linker, "/INCLUDE:_tls_used")
-#pragma comment(linker, "/INCLUDE:rpmalloc_tls_thread_exit_callback")
-
-#pragma const_seg(".CRT$XLY")
-
-extern const PIMAGE_TLS_CALLBACK rpmalloc_tls_thread_exit_callback;
-const PIMAGE_TLS_CALLBACK rpmalloc_tls_thread_exit_callback =
- RPMallocTlsOnThreadExit;
-
-// Reset const section
-#pragma const_seg()
-#else // _WIN64
-#pragma comment(linker, "/INCLUDE:__tls_used")
-#pragma comment(linker, "/INCLUDE:_rpmalloc_tls_thread_exit_callback")
-
-#pragma data_seg(".CRT$XLY")
-
-PIMAGE_TLS_CALLBACK rpmalloc_tls_thread_exit_callback = RPMallocTlsOnThreadExit;
-
-// Reset data section
-#pragma data_seg()
-#endif // _WIN64
-
-static void NTAPI _rpmalloc_thread_destructor(void *value) {
+#if defined(_WIN32) && (!defined(BUILD_DYNAMIC_LINK) || !BUILD_DYNAMIC_LINK)
+
+static void NTAPI RPMallocTlsOnThreadExit(PVOID module, DWORD reason,
+ PVOID reserved) {
+ switch (reason) {
+ case DLL_PROCESS_ATTACH:
+ break;
+ case DLL_PROCESS_DETACH:
+ rpmalloc_finalize();
+ break;
+ case DLL_THREAD_ATTACH:
+ break;
+ case DLL_THREAD_DETACH:
+ rpmalloc_thread_finalize(1);
+ break;
+ }
+}
+
+#ifdef _WIN64
+#pragma comment(linker, "/INCLUDE:_tls_used")
+#pragma comment(linker, "/INCLUDE:rpmalloc_tls_thread_exit_callback")
+
+#pragma const_seg(".CRT$XLY")
+
+extern const PIMAGE_TLS_CALLBACK rpmalloc_tls_thread_exit_callback;
+const PIMAGE_TLS_CALLBACK rpmalloc_tls_thread_exit_callback =
+ RPMallocTlsOnThreadExit;
+
+// Reset const section
+#pragma const_seg()
+#else // _WIN64
+#pragma comment(linker, "/INCLUDE:__tls_used")
+#pragma comment(linker, "/INCLUDE:_rpmalloc_tls_thread_exit_callback")
+
+#pragma data_seg(".CRT$XLY")
+
+PIMAGE_TLS_CALLBACK rpmalloc_tls_thread_exit_callback = RPMallocTlsOnThreadExit;
+
+// Reset data section
+#pragma data_seg()
+#endif // _WIN64
+
+static void NTAPI _rpmalloc_thread_destructor(void *value) {
#if ENABLE_OVERRIDE
// If this is called on main thread it means rpmalloc_finalize
// has not been called and shutdown is forced (through _exit) or unclean
``````````
</details>
https://github.com/llvm/llvm-project/pull/171465
More information about the llvm-commits
mailing list