[Bug c++/80157] Spurious "Wsign-conversion" warning with const, size_t, array.
egallager at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Aug 23 07:49:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80157
Eric Gallager <egallager at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
CC| |egallager at gcc dot gnu.org
Resolution|--- |DUPLICATE
--- Comment #1 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to Ian Mallett from comment #0)
> Minimal example (compile GCC >= ~6.1 with -Wsign-conversion):
>
> #include <cstdlib>
> bool f(size_t const xy[2], int z) {
> return xy[0] + xy[1] < static_cast<size_t>(z);
> }
>
> Produces an erroneous warning:
>
> <source>: In function 'bool f(const size_t*, int)':
> <source>:3:25: warning: conversion to 'long unsigned int' from 'int' may
> change the sign of the result [-Wsign-conversion]
> return xy[0] + xy[1] < static_cast<size_t>(z);
> ^~~~~~~~~~~~~~~~~~~~~~
> Compiler exited with result code 0
>
> Taking the const out, using unsigned, or passing x and y separately rather
> than as an array resolves the warning. Doesn't occur on Clang, MSVC, or
> earlier GCC.
>
> May be related to bug 66170.
I closed that one as a dup of bug 60342 so I'm gonna do likewise with this one,
too. (Just like those two the warning is gone here with gcc8, too)
*** This bug has been marked as a duplicate of bug 60342 ***
More information about the Gcc-bugs
mailing list