[Bug c++/105534] -Wmaybe-uninitialized cases shouldn't suppress -Wuninitialized warnings
redbeard0531 at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon May 9 13:51:28 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105534
--- Comment #4 from Mathias Stearn <redbeard0531 at gmail dot com> ---
(In reply to Richard Biener from comment #2)
> Note there's
>
> _2 = value_1(D) * x_2;
>
> where _2 might be effectively uninitialized iff x_2 is not zero. When x_2
> is zero then _2 has a well-defined value.
Not according to the C++ standard. http://eel.is/c++draft/basic.indet seems
pretty clear that unless x_2 is std::byte (which doesn't support
multiplication) or an "unsigned ordinary character type", then that is UB.
FWIW I still think I'd expect the warning on "unsigned char x, y; y = x * 0;",
but I would definitiely expect the warning for int.
More information about the Gcc-bugs
mailing list