[llvm] [llvm] revisions to export annotation macros to avoid compiler warnings (PR #135995)

Saleem Abdulrasool via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 16 15:13:55 PDT 2025


================
@@ -197,17 +197,32 @@
 #define LLVM_EXPORT_TEMPLATE
 #endif
 #define LLVM_ABI_EXPORT __declspec(dllexport)
-#elif defined(__ELF__) || defined(__MINGW32__) || defined(_AIX) ||             \
-    defined(__MVS__)
-#define LLVM_ABI LLVM_ATTRIBUTE_VISIBILITY_DEFAULT
-#define LLVM_TEMPLATE_ABI LLVM_ATTRIBUTE_VISIBILITY_DEFAULT
+#elif (defined(__ELF__) || defined(__MINGW32__) || defined(_AIX) ||            \
+       defined(__MVS__)) &&                                                    \
+    __has_attribute(visibililty)
----------------
compnerd wrote:

`__has_attribute` is a clang extension, and would generally be defined as follows:

```c
#if !defined(__has_attribute)
#define __has_attribute(attribute) 0
#endif
```

This basically means that the compiler which would previously attempted to use the GNU syntax would no longer do so if it is not clang or does not implement the clang extensions (or does not enable them by default).

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


More information about the llvm-commits mailing list