https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106128
Bug ID: 106128 Summary: Bogus Warning on static_cast double to bool with -Wfloat-equal Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: mckelvey at maskull dot com Target Milestone: --- static_cast should not warn on its internals. int main() { double xx(0.0); // Warning bool y = static_cast<bool>(xx); // No warning bool z = static_cast<bool>(0.0); return 0; } g++ -Wfloat-equal -c test.cc test.cc: In function ‘int main()’: test.cc:6:36: warning: comparing floating-point with ‘==’ or ‘!=’ is unsafe [-Wfloat-equal] 6 | bool y = static_cast<bool>(xx); | ^~ $ /usr/local/bin/g++ -v Using built-in specs. COLLECT_GCC=/usr/local/bin/g++ COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-cygwin/13.0.0/lto-wrapper.exe Target: x86_64-pc-cygwin Configured with: ./configure --enable-languages=c,c++ --enable-threads=posix Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 13.0.0 20220626 (experimental) (GCC) $ uname CYGWIN_NT-10.0-19044 Fails on gcc-11-20220624, gcc-12-20220625, gcc-13-20220626