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

via libc-commits libc-commits at lists.llvm.org
Tue Dec 5 11:32:54 PST 2023


================
@@ -29,9 +29,14 @@ 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, so we need to keep the c < 0 check.
+  // 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)
----------------
lntue wrote:

I think the point is to remove the warnings.  And with that, I think `(c & ~127) != 0` is better than wrapping with `#pragma`'s.  Maybe adding comments to the condition like
```
  This is equivalent to check `(c > 127) || (c < 0)`, but also works without warnings when `wint_t` is unsigned.
```
to make it clearer.

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


More information about the libc-commits mailing list