[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