llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Zeyi Xu (zeyi2)

<details>
<summary>Changes</summary>

Define `__SIG_ATOMIC_TYPE__` for compatibility with GCC.

This fixes `riscv32-netbsd` and `riscv64-netbsd` system headers that define 
`sig_atomic_t` using this macro.

Reference: 
https://gcc.gnu.org/onlinedocs/gcc-16.1.0/cpp/Common-Predefined-Macros.html

Follow up of #<!-- -->199678, Closes #<!-- -->213895

---
Full diff: https://github.com/llvm/llvm-project/pull/213934.diff


5 Files Affected:

- (modified) clang/docs/ReleaseNotes.md (+1) 
- (modified) clang/lib/Frontend/InitPreprocessor.cpp (+1) 
- (modified) clang/test/Preprocessor/init-aarch64.c (+1) 
- (modified) clang/test/Preprocessor/init-riscv.c (+1) 
- (modified) clang/test/Preprocessor/init.c (+2) 


``````````diff
diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md
index a38b99ff8e075..7ea46cbf2aeed 100644
--- a/clang/docs/ReleaseNotes.md
+++ b/clang/docs/ReleaseNotes.md
@@ -365,6 +365,7 @@ features cannot lower the translation-unit ABI level;
 - Fixed a bug where `__func__`, `__PRETTY_FUNCTION__` and `__FUNCTION__` were 
not resolving to the proper function when inside a lambda return type 
(#GH211811)
 - Fixed USR generation for declarations whose signature mentions a class-type
   non-type template parameter. (#GH212351)
+- Clang now defines the GCC-compatible predefined macro `__SIG_ATOMIC_TYPE__`. 
(#GH213895)
 
 #### Bug Fixes to Compiler Builtins
 
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp 
b/clang/lib/Frontend/InitPreprocessor.cpp
index 8b6ff844d0daa..65b065dc818f5 100644
--- a/clang/lib/Frontend/InitPreprocessor.cpp
+++ b/clang/lib/Frontend/InitPreprocessor.cpp
@@ -1191,6 +1191,7 @@ static void InitializePredefinedMacros(const TargetInfo 
&TI,
   DefineFmt(LangOpts, "__SIZE", TI.getSizeType(), TI, Builder);
   DefineType("__WCHAR_TYPE__", TI.getWCharType(), Builder);
   DefineType("__WINT_TYPE__", TI.getWIntType(), Builder);
+  DefineType("__SIG_ATOMIC_TYPE__", TI.getSigAtomicType(), Builder);
   DefineTypeSizeAndWidth("__SIG_ATOMIC", TI.getSigAtomicType(), TI, Builder);
   DefineTypeMin("__SIG_ATOMIC", TI.getSigAtomicType(), TI, Builder);
   if (LangOpts.C23)
diff --git a/clang/test/Preprocessor/init-aarch64.c 
b/clang/test/Preprocessor/init-aarch64.c
index 6796cb3bdd912..44b92ea2331b0 100644
--- a/clang/test/Preprocessor/init-aarch64.c
+++ b/clang/test/Preprocessor/init-aarch64.c
@@ -264,6 +264,7 @@
 // AARCH64-NEXT: #define __SHRT_WIDTH__ 16
 // AARCH64-NEXT: #define __SIG_ATOMIC_MAX__ 2147483647
 // AARCH64-NEXT: #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
+// AARCH64-NEXT: #define __SIG_ATOMIC_TYPE__ int
 // AARCH64-NEXT: #define __SIG_ATOMIC_WIDTH__ 32
 // AARCH64-NEXT: #define __SIZEOF_DOUBLE__ 8
 // AARCH64-NEXT: #define __SIZEOF_FLOAT__ 4
diff --git a/clang/test/Preprocessor/init-riscv.c 
b/clang/test/Preprocessor/init-riscv.c
index 00282e670a0f7..ad554e6948a87 100644
--- a/clang/test/Preprocessor/init-riscv.c
+++ b/clang/test/Preprocessor/init-riscv.c
@@ -14,5 +14,6 @@
 // RV64: #define __GCC_DESTRUCTIVE_SIZE 64
 
 // NETBSD: #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
+// NETBSD: #define __SIG_ATOMIC_TYPE__ int
 // NETBSD: #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
 // NETBSD: #define __WINT_MIN__ 0U
diff --git a/clang/test/Preprocessor/init.c b/clang/test/Preprocessor/init.c
index 249b01b619cdb..21d61de8c0aaf 100644
--- a/clang/test/Preprocessor/init.c
+++ b/clang/test/Preprocessor/init.c
@@ -1950,9 +1950,11 @@
 // WEBASSEMBLY-NEXT:#define __SHRT_WIDTH__ 16
 // WEBASSEMBLY32-NEXT:#define __SIG_ATOMIC_MAX__ 2147483647L
 // WEBASSEMBLY32-NEXT:#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
+// WEBASSEMBLY32-NEXT:#define __SIG_ATOMIC_TYPE__ long int
 // WEBASSEMBLY32-NEXT:#define __SIG_ATOMIC_WIDTH__ 32
 // WEBASSEMBLY64-NEXT:#define __SIG_ATOMIC_MAX__ 9223372036854775807L
 // WEBASSEMBLY64-NEXT:#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
+// WEBASSEMBLY64-NEXT:#define __SIG_ATOMIC_TYPE__ long int
 // WEBASSEMBLY64-NEXT:#define __SIG_ATOMIC_WIDTH__ 64
 // WEBASSEMBLY-NEXT:#define __SIZEOF_DOUBLE__ 8
 // WEBASSEMBLY-NEXT:#define __SIZEOF_FLOAT__ 4

``````````

</details>


https://github.com/llvm/llvm-project/pull/213934
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to