[llvm] [Support] Include Support/thread.h before api implementations (PR #111175)

Thomas Fransham via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 4 08:35:04 PDT 2024


https://github.com/fsfod created https://github.com/llvm/llvm-project/pull/111175

This header was included after the implementations to work around an issue with FreeBSD, however, , this causes some issues when dllexport\explicit visibility
attributes will be added to the headers on Windows, since the definitions need to see the declarations for the attributes to apply.

This is part of the work to enable LLVM_BUILD_LLVM_DYLIB and plugins on windows.


>From 2d41b061729e3c7e7c8af3cf1ba89ba9170e4c50 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Mon, 31 Jul 2023 18:51:26 +0000
Subject: [PATCH] [Support] Include Support/thread.h before api implementations

This header was included after the implementations to work around an
issue with FreeBSD, however, this causes some issues when dllexport\explicit visibility
attributes will be added to the headers on Windows, since the definitions need to see
the declarations for the attributes to apply.
This is part of the work to enable LLVM_BUILD_LLVM_DYLIB and plugins on windows.
---
 llvm/lib/Support/Unix/Threading.inc    | 8 ++++++++
 llvm/lib/Support/Windows/Threading.inc | 1 +
 2 files changed, 9 insertions(+)

diff --git a/llvm/lib/Support/Unix/Threading.inc b/llvm/lib/Support/Unix/Threading.inc
index a354984cabb1ef..ca855eb1160c73 100644
--- a/llvm/lib/Support/Unix/Threading.inc
+++ b/llvm/lib/Support/Unix/Threading.inc
@@ -33,6 +33,14 @@
 #include <pthread_np.h> // For pthread_getthreadid_np() / pthread_set_name_np()
 #endif
 
+
+// Must be included after Threading.inc to provide definition for llvm::thread
+// because FreeBSD's condvar.h (included by user.h) misuses the "thread"
+// keyword.
+#ifndef __FreeBSD__
+#include "llvm/Support/thread.h"
+#endif
+
 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 #include <errno.h>
 #include <sys/cpuset.h>
diff --git a/llvm/lib/Support/Windows/Threading.inc b/llvm/lib/Support/Windows/Threading.inc
index 4baf8b8cb82aed..d862dbd7f71c9d 100644
--- a/llvm/lib/Support/Windows/Threading.inc
+++ b/llvm/lib/Support/Windows/Threading.inc
@@ -12,6 +12,7 @@
 
 #include "llvm/ADT/SmallString.h"
 #include "llvm/ADT/Twine.h"
+#include "llvm/Support/thread.h"
 
 #include "llvm/Support/Windows/WindowsSupport.h"
 #include <process.h>



More information about the llvm-commits mailing list