[Clang] Define `__WCHAR_MIN__` and related macros (#208135)

Define `__WCHAR_MIN__`, `__WINT_MIN__`, and `__SIG_ATOMIC_MIN__` for
compatibility with GCC.

This also fixes targets such as `riscv*-netbsd` that define `WCHAR_MIN`
from `__WCHAR_MIN__`.

Reference:
https://gcc.gnu.org/onlinedocs/gcc-16.1.0/cpp/Common-Predefined-Macros.html
Closes #199678
diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md
index 92e6358..be89470 100644
--- a/clang/docs/ReleaseNotes.md
+++ b/clang/docs/ReleaseNotes.md
@@ -791,6 +791,7 @@
 - Fixed assertion failures involving code completion with delayed default arguments and exception specifications. (#GH200879)
 - Fixed a regression where calling a function that takes a class-type parameter by value inside `decltype` of a concept could be incorrectly rejected when used as a non-type template argument. (#GH175831)
 - Fixed a crash in the constant evaluator when an ill-formed array new-expression whose bound could not be determined (e.g. `new int[]()`) was used in a constant expression. (#GH200139)
+- Clang now defines the GCC-compatible predefined macros `__WCHAR_MIN__`, `__WINT_MIN__`, and `__SIG_ATOMIC_MIN__`. (#GH199678)
 
 #### Bug Fixes to Compiler Builtins
 
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp
index 7752ab5..8b6ff84 100644
--- a/clang/lib/Frontend/InitPreprocessor.cpp
+++ b/clang/lib/Frontend/InitPreprocessor.cpp
@@ -186,6 +186,14 @@
                  TI.isTypeSigned(Ty), Builder);
 }
 
+static void DefineTypeMin(const Twine &Prefix, TargetInfo::IntType Ty,
+                          const TargetInfo &TI, MacroBuilder &Builder) {
+  Builder.defineMacro(Prefix + "_MIN__",
+                      TI.isTypeSigned(Ty)
+                          ? Twine("(-") + Prefix + "_MAX__ - 1)"
+                          : Twine("0") + TI.getTypeConstantSuffix(Ty));
+}
+
 static void DefineFmt(const LangOptions &LangOpts, const Twine &Prefix,
                       TargetInfo::IntType Ty, const TargetInfo &TI,
                       MacroBuilder &Builder) {
@@ -1129,7 +1137,9 @@
   DefineTypeSize("__LONG_MAX__", TargetInfo::SignedLong, TI, Builder);
   DefineTypeSize("__LONG_LONG_MAX__", TargetInfo::SignedLongLong, TI, Builder);
   DefineTypeSizeAndWidth("__WCHAR", TI.getWCharType(), TI, Builder);
+  DefineTypeMin("__WCHAR", TI.getWCharType(), TI, Builder);
   DefineTypeSizeAndWidth("__WINT", TI.getWIntType(), TI, Builder);
+  DefineTypeMin("__WINT", TI.getWIntType(), TI, Builder);
   DefineTypeSizeAndWidth("__INTMAX", TI.getIntMaxType(), TI, Builder);
   DefineTypeSizeAndWidth("__SIZE", TI.getSizeType(), TI, Builder);
 
@@ -1182,6 +1192,7 @@
   DefineType("__WCHAR_TYPE__", TI.getWCharType(), Builder);
   DefineType("__WINT_TYPE__", TI.getWIntType(), Builder);
   DefineTypeSizeAndWidth("__SIG_ATOMIC", TI.getSigAtomicType(), TI, Builder);
+  DefineTypeMin("__SIG_ATOMIC", TI.getSigAtomicType(), TI, Builder);
   if (LangOpts.C23)
     DefineType("__CHAR8_TYPE__", TI.UnsignedChar, Builder);
   DefineType("__CHAR16_TYPE__", TI.getChar16Type(), Builder);
diff --git a/clang/lib/Headers/stdint.h b/clang/lib/Headers/stdint.h
index 96c2cca..07c3254 100644
--- a/clang/lib/Headers/stdint.h
+++ b/clang/lib/Headers/stdint.h
@@ -805,25 +805,16 @@
 #endif
 
 /* C99 7.18.3 Limits of other integer types. */
-#define SIG_ATOMIC_MIN __INTN_MIN(__SIG_ATOMIC_WIDTH__)
-#define SIG_ATOMIC_MAX __INTN_MAX(__SIG_ATOMIC_WIDTH__)
-#ifdef __WINT_UNSIGNED__
-# define WINT_MIN       __UINTN_C(__WINT_WIDTH__, 0)
-# define WINT_MAX       __UINTN_MAX(__WINT_WIDTH__)
-#else
-# define WINT_MIN       __INTN_MIN(__WINT_WIDTH__)
-# define WINT_MAX       __INTN_MAX(__WINT_WIDTH__)
-#endif
+#define SIG_ATOMIC_MIN __SIG_ATOMIC_MIN__
+#define SIG_ATOMIC_MAX __SIG_ATOMIC_MAX__
+#define WINT_MIN __WINT_MIN__
+#define WINT_MAX __WINT_MAX__
 
 #ifndef WCHAR_MAX
 # define WCHAR_MAX __WCHAR_MAX__
 #endif
 #ifndef WCHAR_MIN
-# if __WCHAR_MAX__ == __INTN_MAX(__WCHAR_WIDTH__)
-#  define WCHAR_MIN __INTN_MIN(__WCHAR_WIDTH__)
-# else
-#  define WCHAR_MIN __UINTN_C(__WCHAR_WIDTH__, 0)
-# endif
+#define WCHAR_MIN __WCHAR_MIN__
 #endif
 
 /* 7.18.4.2 Macros for greatest-width integer constants. */
diff --git a/clang/test/Preprocessor/init-aarch64.c b/clang/test/Preprocessor/init-aarch64.c
index 09e3fc9..f875c107 100644
--- a/clang/test/Preprocessor/init-aarch64.c
+++ b/clang/test/Preprocessor/init-aarch64.c
@@ -263,6 +263,7 @@
 // AARCH64-NEXT: #define __SHRT_MAX__ 32767
 // 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_WIDTH__ 32
 // AARCH64-NEXT: #define __SIZEOF_DOUBLE__ 8
 // AARCH64-NEXT: #define __SIZEOF_FLOAT__ 4
@@ -393,10 +394,12 @@
 // AARCH64-NEXT: #define __USER_LABEL_PREFIX__
 // AARCH64-NEXT: #define __VERSION__ "{{.*}}"
 // AARCH64-NEXT: #define __WCHAR_MAX__ 4294967295U
+// AARCH64-NEXT: #define __WCHAR_MIN__ 0U
 // AARCH64-NEXT: #define __WCHAR_TYPE__ unsigned int
 // AARCH64-NEXT: #define __WCHAR_UNSIGNED__ 1
 // AARCH64-NEXT: #define __WCHAR_WIDTH__ 32
 // AARCH64-NEXT: #define __WINT_MAX__ 2147483647
+// AARCH64-NEXT: #define __WINT_MIN__ (-__WINT_MAX__ - 1)
 // AARCH64-NEXT: #define __WINT_TYPE__ int
 // AARCH64-NEXT: #define __WINT_WIDTH__ 32
 // AARCH64-NEXT: #define __aarch64__ 1
diff --git a/clang/test/Preprocessor/init-riscv.c b/clang/test/Preprocessor/init-riscv.c
index 4eeeccc..00282e6 100644
--- a/clang/test/Preprocessor/init-riscv.c
+++ b/clang/test/Preprocessor/init-riscv.c
@@ -2,9 +2,17 @@
 // RUN:     FileCheck -match-full-lines -check-prefixes=RV32 %s
 // RUN: %clang_cc1 -E -dM -triple=riscv64 < /dev/null | \
 // RUN:     FileCheck -match-full-lines -check-prefixes=RV64 %s
+// RUN: %clang_cc1 -E -dM -triple=riscv32-unknown-netbsd < /dev/null | \
+// RUN:     FileCheck -match-full-lines -check-prefixes=NETBSD %s
+// RUN: %clang_cc1 -E -dM -triple=riscv64-unknown-netbsd < /dev/null | \
+// RUN:     FileCheck -match-full-lines -check-prefixes=NETBSD %s
 
 // RV32: #define __GCC_CONSTRUCTIVE_SIZE 64
 // RV32: #define __GCC_DESTRUCTIVE_SIZE 64
 
 // RV64: #define __GCC_CONSTRUCTIVE_SIZE 64
 // RV64: #define __GCC_DESTRUCTIVE_SIZE 64
+
+// NETBSD: #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
+// 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 ef7b76a..afea10e 100644
--- a/clang/test/Preprocessor/init.c
+++ b/clang/test/Preprocessor/init.c
@@ -1949,8 +1949,10 @@
 // WEBASSEMBLY-NEXT:#define __SHRT_MAX__ 32767
 // 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_WIDTH__ 32
 // WEBASSEMBLY64-NEXT:#define __SIG_ATOMIC_MAX__ 9223372036854775807L
+// WEBASSEMBLY64-NEXT:#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
 // WEBASSEMBLY64-NEXT:#define __SIG_ATOMIC_WIDTH__ 64
 // WEBASSEMBLY-NEXT:#define __SIZEOF_DOUBLE__ 8
 // WEBASSEMBLY-NEXT:#define __SIZEOF_FLOAT__ 4
@@ -2092,10 +2094,12 @@
 // WEBASSEMBLY-NEXT:#define __USER_LABEL_PREFIX__
 // WEBASSEMBLY-NEXT:#define __VERSION__ "{{.*}}"
 // WEBASSEMBLY-NEXT:#define __WCHAR_MAX__ 2147483647
+// WEBASSEMBLY-NEXT:#define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
 // WEBASSEMBLY-NEXT:#define __WCHAR_TYPE__ int
 // WEBASSEMBLY-NOT:#define __WCHAR_UNSIGNED__
 // WEBASSEMBLY-NEXT:#define __WCHAR_WIDTH__ 32
 // WEBASSEMBLY-NEXT:#define __WINT_MAX__ 2147483647
+// WEBASSEMBLY-NEXT:#define __WINT_MIN__ (-__WINT_MAX__ - 1)
 // WEBASSEMBLY-NEXT:#define __WINT_TYPE__ int
 // WEBASSEMBLY-NOT:#define __WINT_UNSIGNED__
 // WEBASSEMBLY-NEXT:#define __WINT_WIDTH__ 32
diff --git a/clang/test/Preprocessor/stdint.c b/clang/test/Preprocessor/stdint.c
index 9f982a3..5e207f3 100644
--- a/clang/test/Preprocessor/stdint.c
+++ b/clang/test/Preprocessor/stdint.c
@@ -85,9 +85,9 @@
 // ARM:INTMAX_MAX_ 9223372036854775807LL
 // ARM:UINTMAX_MAX_ 18446744073709551615ULL
 //
-// ARM:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// ARM:SIG_ATOMIC_MIN_ (-2147483647 - 1)
 // ARM:SIG_ATOMIC_MAX_ 2147483647
-// ARM:WINT_MIN_ (-2147483647 -1)
+// ARM:WINT_MIN_ (-2147483647 - 1)
 // ARM:WINT_MAX_ 2147483647
 //
 // ARM:WCHAR_MAX_ 4294967295U
@@ -192,13 +192,13 @@
 // ARM64_32:INTMAX_MAX_ 9223372036854775807LL
 // ARM64_32:UINTMAX_MAX_ 18446744073709551615ULL
 //
-// ARM64_32:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// ARM64_32:SIG_ATOMIC_MIN_ (-2147483647 - 1)
 // ARM64_32:SIG_ATOMIC_MAX_ 2147483647
-// ARM64_32:WINT_MIN_ (-2147483647 -1)
+// ARM64_32:WINT_MIN_ (-2147483647 - 1)
 // ARM64_32:WINT_MAX_ 2147483647
 //
 // ARM64_32:WCHAR_MAX_ 2147483647
-// ARM64_32:WCHAR_MIN_ (-2147483647 -1)
+// ARM64_32:WCHAR_MIN_ (-2147483647 - 1)
 //
 // ARM64_32:INT8_C_(0) 0
 // ARM64_32:UINT8_C_(0) 0
@@ -300,13 +300,13 @@
 // I386:INTMAX_MAX_ 9223372036854775807LL
 // I386:UINTMAX_MAX_ 18446744073709551615ULL
 //
-// I386:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// I386:SIG_ATOMIC_MIN_ (-2147483647 - 1)
 // I386:SIG_ATOMIC_MAX_ 2147483647
-// I386:WINT_MIN_ (-2147483647 -1)
+// I386:WINT_MIN_ (-2147483647 - 1)
 // I386:WINT_MAX_ 2147483647
 //
 // I386:WCHAR_MAX_ 2147483647
-// I386:WCHAR_MIN_ (-2147483647 -1)
+// I386:WCHAR_MIN_ (-2147483647 - 1)
 //
 // I386:INT8_C_(0) 0
 // I386:UINT8_C_(0) 0
@@ -407,13 +407,13 @@
 // MIPS:INTMAX_MAX_ 9223372036854775807LL
 // MIPS:UINTMAX_MAX_ 18446744073709551615ULL
 //
-// MIPS:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// MIPS:SIG_ATOMIC_MIN_ (-2147483647 - 1)
 // MIPS:SIG_ATOMIC_MAX_ 2147483647
-// MIPS:WINT_MIN_ (-2147483647 -1)
+// MIPS:WINT_MIN_ (-2147483647 - 1)
 // MIPS:WINT_MAX_ 2147483647
 //
 // MIPS:WCHAR_MAX_ 2147483647
-// MIPS:WCHAR_MIN_ (-2147483647 -1)
+// MIPS:WCHAR_MIN_ (-2147483647 - 1)
 //
 // MIPS:INT8_C_(0) 0
 // MIPS:UINT8_C_(0) 0
@@ -514,13 +514,13 @@
 // MIPS64:INTMAX_MAX_ 9223372036854775807L
 // MIPS64:UINTMAX_MAX_ 18446744073709551615UL
 //
-// MIPS64:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// MIPS64:SIG_ATOMIC_MIN_ (-2147483647 - 1)
 // MIPS64:SIG_ATOMIC_MAX_ 2147483647
-// MIPS64:WINT_MIN_ (-2147483647 -1)
+// MIPS64:WINT_MIN_ (-2147483647 - 1)
 // MIPS64:WINT_MAX_ 2147483647
 //
 // MIPS64:WCHAR_MAX_ 2147483647
-// MIPS64:WCHAR_MIN_ (-2147483647 -1)
+// MIPS64:WCHAR_MIN_ (-2147483647 - 1)
 //
 // MIPS64:INT8_C_(0) 0
 // MIPS64:UINT8_C_(0) 0
@@ -614,13 +614,13 @@
 // MSP430:INTMAX_MAX_ 9223372036854775807LL
 // MSP430:UINTMAX_MAX_ 18446744073709551615ULL
 //
-// MSP430:SIG_ATOMIC_MIN_ (-2147483647L -1)
+// MSP430:SIG_ATOMIC_MIN_ (-2147483647L - 1)
 // MSP430:SIG_ATOMIC_MAX_ 2147483647L
-// MSP430:WINT_MIN_ (-32767 -1)
+// MSP430:WINT_MIN_ (-32767 - 1)
 // MSP430:WINT_MAX_ 32767
 //
 // MSP430:WCHAR_MAX_ 32767
-// MSP430:WCHAR_MIN_ (-32767 -1)
+// MSP430:WCHAR_MIN_ (-32767 - 1)
 //
 // MSP430:INT8_C_(0) 0
 // MSP430:UINT8_C_(0) 0
@@ -721,13 +721,13 @@
 // PPC64:INTMAX_MAX_ 9223372036854775807L
 // PPC64:UINTMAX_MAX_ 18446744073709551615UL
 //
-// PPC64:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// PPC64:SIG_ATOMIC_MIN_ (-2147483647 - 1)
 // PPC64:SIG_ATOMIC_MAX_ 2147483647
-// PPC64:WINT_MIN_ (-2147483647 -1)
+// PPC64:WINT_MIN_ (-2147483647 - 1)
 // PPC64:WINT_MAX_ 2147483647
 //
 // PPC64:WCHAR_MAX_ 2147483647
-// PPC64:WCHAR_MIN_ (-2147483647 -1)
+// PPC64:WCHAR_MIN_ (-2147483647 - 1)
 //
 // PPC64:INT8_C_(0) 0
 // PPC64:UINT8_C_(0) 0
@@ -828,13 +828,13 @@
 // PPC64-NETBSD:INTMAX_MAX_ 9223372036854775807L
 // PPC64-NETBSD:UINTMAX_MAX_ 18446744073709551615UL
 //
-// PPC64-NETBSD:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// PPC64-NETBSD:SIG_ATOMIC_MIN_ (-2147483647 - 1)
 // PPC64-NETBSD:SIG_ATOMIC_MAX_ 2147483647
-// PPC64-NETBSD:WINT_MIN_ (-2147483647 -1)
+// PPC64-NETBSD:WINT_MIN_ (-2147483647 - 1)
 // PPC64-NETBSD:WINT_MAX_ 2147483647
 //
 // PPC64-NETBSD:WCHAR_MAX_ 2147483647
-// PPC64-NETBSD:WCHAR_MIN_ (-2147483647 -1)
+// PPC64-NETBSD:WCHAR_MIN_ (-2147483647 - 1)
 //
 // PPC64-NETBSD:INT8_C_(0) 0
 // PPC64-NETBSD:UINT8_C_(0) 0
@@ -936,13 +936,13 @@
 // PPC:INTMAX_MAX_ 9223372036854775807LL
 // PPC:UINTMAX_MAX_ 18446744073709551615ULL
 //
-// PPC:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// PPC:SIG_ATOMIC_MIN_ (-2147483647 - 1)
 // PPC:SIG_ATOMIC_MAX_ 2147483647
-// PPC:WINT_MIN_ (-2147483647 -1)
+// PPC:WINT_MIN_ (-2147483647 - 1)
 // PPC:WINT_MAX_ 2147483647
 //
 // PPC:WCHAR_MAX_ 2147483647
-// PPC:WCHAR_MIN_ (-2147483647 -1)
+// PPC:WCHAR_MIN_ (-2147483647 - 1)
 //
 // PPC:INT8_C_(0) 0
 // PPC:UINT8_C_(0) 0
@@ -1043,13 +1043,13 @@
 // S390X:INTMAX_MAX_ 9223372036854775807L
 // S390X:UINTMAX_MAX_ 18446744073709551615UL
 //
-// S390X:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// S390X:SIG_ATOMIC_MIN_ (-2147483647 - 1)
 // S390X:SIG_ATOMIC_MAX_ 2147483647
-// S390X:WINT_MIN_ (-2147483647 -1)
+// S390X:WINT_MIN_ (-2147483647 - 1)
 // S390X:WINT_MAX_ 2147483647
 //
 // S390X:WCHAR_MAX_ 2147483647
-// S390X:WCHAR_MIN_ (-2147483647 -1)
+// S390X:WCHAR_MIN_ (-2147483647 - 1)
 //
 // S390X:INT8_C_(0) 0
 // S390X:UINT8_C_(0) 0
@@ -1150,13 +1150,13 @@
 // SPARC:INTMAX_MAX_ 9223372036854775807LL
 // SPARC:UINTMAX_MAX_ 18446744073709551615ULL
 //
-// SPARC:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// SPARC:SIG_ATOMIC_MIN_ (-2147483647 - 1)
 // SPARC:SIG_ATOMIC_MAX_ 2147483647
-// SPARC:WINT_MIN_ (-2147483647 -1)
+// SPARC:WINT_MIN_ (-2147483647 - 1)
 // SPARC:WINT_MAX_ 2147483647
 //
 // SPARC:WCHAR_MAX_ 2147483647
-// SPARC:WCHAR_MIN_ (-2147483647 -1)
+// SPARC:WCHAR_MIN_ (-2147483647 - 1)
 //
 // SPARC:INT8_C_(0) 0
 // SPARC:UINT8_C_(0) 0
@@ -1250,13 +1250,13 @@
 // TCE:INTMAX_MAX_ 2147483647L
 // TCE:UINTMAX_MAX_ 4294967295UL
 //
-// TCE:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// TCE:SIG_ATOMIC_MIN_ (-2147483647 - 1)
 // TCE:SIG_ATOMIC_MAX_ 2147483647
-// TCE:WINT_MIN_ (-2147483647 -1)
+// TCE:WINT_MIN_ (-2147483647 - 1)
 // TCE:WINT_MAX_ 2147483647
 //
 // TCE:WCHAR_MAX_ 2147483647
-// TCE:WCHAR_MIN_ (-2147483647 -1)
+// TCE:WCHAR_MIN_ (-2147483647 - 1)
 //
 // TCE:INT8_C_(0) 0
 // TCE:UINT8_C_(0) 0
@@ -1358,13 +1358,13 @@
 // X86_64:INTMAX_MAX_ 9223372036854775807L
 // X86_64:UINTMAX_MAX_ 18446744073709551615UL
 //
-// X86_64:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// X86_64:SIG_ATOMIC_MIN_ (-2147483647 - 1)
 // X86_64:SIG_ATOMIC_MAX_ 2147483647
-// X86_64:WINT_MIN_ (-2147483647 -1)
+// X86_64:WINT_MIN_ (-2147483647 - 1)
 // X86_64:WINT_MAX_ 2147483647
 //
 // X86_64:WCHAR_MAX_ 2147483647
-// X86_64:WCHAR_MIN_ (-2147483647 -1)
+// X86_64:WCHAR_MIN_ (-2147483647 - 1)
 //
 // X86_64:INT8_C_(0) 0
 // X86_64:UINT8_C_(0) 0
@@ -1478,7 +1478,7 @@
 // XCORE:INTMAX_MAX_ 9223372036854775807LL
 // XCORE:UINTMAX_MAX_ 18446744073709551615ULL
 //
-// XCORE:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// XCORE:SIG_ATOMIC_MIN_ (-2147483647 - 1)
 // XCORE:SIG_ATOMIC_MAX_ 2147483647
 // XCORE:WINT_MIN_ 0U
 // XCORE:WINT_MAX_ 4294967295U
@@ -1585,13 +1585,13 @@
 // XTENSA:INTMAX_MAX_ 9223372036854775807LL
 // XTENSA:UINTMAX_MAX_ 18446744073709551615ULL
 //
-// XTENSA:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// XTENSA:SIG_ATOMIC_MIN_ (-2147483647 - 1)
 // XTENSA:SIG_ATOMIC_MAX_ 2147483647
 // XTENSA:WINT_MIN_ 0U
 // XTENSA:WINT_MAX_ 4294967295U
 //
 // XTENSA:WCHAR_MAX_ 2147483647
-// XTENSA:WCHAR_MIN_ (-2147483647 -1)
+// XTENSA:WCHAR_MIN_ (-2147483647 - 1)
 //
 // XTENSA:INT8_C_(0) 0
 // XTENSA:UINT8_C_(0) 0
@@ -1631,12 +1631,12 @@
 // JOIN:INTMAX_MIN_ (-9223372036854775807LL -1)
 // JOIN:INTMAX_MAX_ 9223372036854775807LL
 // JOIN:UINTMAX_MAX_ 18446744073709551615ULL
-// JOIN:SIG_ATOMIC_MIN_ (-2147483647 -1)
+// JOIN:SIG_ATOMIC_MIN_ (-2147483647 - 1)
 // JOIN:SIG_ATOMIC_MAX_ 2147483647
-// JOIN:WINT_MIN_ (-2147483647 -1)
+// JOIN:WINT_MIN_ (-2147483647 - 1)
 // JOIN:WINT_MAX_ 2147483647
 // JOIN:WCHAR_MAX_ 2147483647
-// JOIN:WCHAR_MIN_ (-2147483647 -1)
+// JOIN:WCHAR_MIN_ (-2147483647 - 1)
 // JOIN:INTMAX_C_(0) 0LL
 // JOIN:UINTMAX_C_(0) 0ULL