[libc-commits] [libc] [libc] fix -Wtype-limits in wctob (PR #74511)

via libc-commits libc-commits at lists.llvm.org
Tue Dec 5 13:19:56 PST 2023


================
@@ -28,15 +28,14 @@ namespace internal {
 LIBC_INLINE cpp::optional<int> wctob(wint_t c) {
   // This needs to be translated to EOF at the callsite. This is to avoid
   // including stdio.h in this file.
-  // The standard states that wint_t may either be an alias of wchar_t or
-  // an alias of an integer type where different platforms define this type with
-  // different signedness, so we need to keep the c < 0 check, hence the
-  // pragmas.
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wtype-limits"
-  if (c > 127 || c < 0)
+  if (c > 127)
     return cpp::nullopt;
-#pragma GCC diagnostic pop
+  // The standard states that wint_t may either be an alias of wchar_t or
+  // an alias of an integer type, different platforms define this type with
+  // different signedness, so we may need the c < 0 check.
+  if constexpr (cpp::is_signed_v<wint_t>)
+    if (c < 0)
----------------
lntue wrote:

Templated version generates warnings for clang instead https://godbolt.org/z/e5qPz6hx9

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


More information about the libc-commits mailing list