| Bug #97468 | clang 5.0.1 reports "missing-braces" warnings | ||
|---|---|---|---|
| Submitted: | 4 Nov 2019 11:08 | Modified: | 5 Nov 2019 14:01 |
| Reporter: | Przemysław Skibiński (OCA) | Email Updates: | |
| Status: | Won't fix | Impact on me: | |
| Category: | MySQL Server: Compiling | Severity: | S3 (Non-critical) |
| Version: | 8.0.18 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
[4 Nov 2019 12:50]
MySQL Verification Team
Thank you for the bug report.
miguel@tikal:~/tmp/mysql-8.0.18$ make > compile-log.txt
/home/miguel/tmp/mysql-8.0.18/storage/innobase/clone/clone0api.cc:1852:36: error: suggest braces around initialization of subobject
[-Werror,-Wmissing-braces]
Fixup_data::s_config_tables = {"slave_relay_log_info", "slave_worker_info"};
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ }
[5 Nov 2019 10:13]
Jon Olav Hauglid
Posted by developer: Thanks for the bug report! Repeatable with Clang 5, but not with Clang 6, 7, 8 and 9. For this reason, we prefer not to turn -Wmissing-braces off since it is useful to us with newer versions of Clang.
[5 Nov 2019 14:01]
Przemysław Skibiński
The warning can be disabled only for clang-5 or older: diff --git a/cmake/maintainer.cmake b/cmake/maintainer.cmake index 55e8566bccc..b64482d119c 100644 --- a/cmake/maintainer.cmake +++ b/cmake/maintainer.cmake @@ -89,6 +89,11 @@ IF(MY_COMPILER_IS_CLANG) STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wno-null-conversion") STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wno-unused-private-field") + # clang-5 or older: disable "suggest braces around initialization of subobject" warnings + IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6) + STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wno-missing-braces") + ENDIF() + STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wconditional-uninitialized") STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wdeprecated") STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wextra-semi")

Description: clang 5.0.1 (also clang 4.0) on Ubuntu Bionic reports a lot of "missing-braces" warnings: /data/mysql-server/mysql-8.0/storage/innobase/clone/clone0api.cc:1852:36: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces] Fixup_data::s_config_tables = {"slave_relay_log_info", "slave_worker_info"}; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ { } /data/mysql-server/mysql-8.0/router/src/http/src/kdf_sha_crypt.cc:283:9: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces] 20, 10, 0, 11, 1, 21, 2, 22, 12, 23, 13, 3, 14, 4, 24, 5, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ { /data/mysql-server/mysql-8.0/router/src/harness/src/loader.cc:170:42: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces] const std::array<int, 6> g_fatal_signals{SIGSEGV, SIGABRT, SIGBUS, ^~~~~~~~~~~~~~~~~~~~~~~~~ { /usr/include/x86_64-linux-gnu/bits/signum-generic.h:52:18: note: expanded from macro 'SIGSEGV' #define SIGSEGV 11 /* Invalid access to storage. */ ^ How to repeat: CC=clang-5.0 CXX=clang++-5.0 cmake -DCMAKE_BUILD_TYPE=Debug -DMYSQL_MAINTAINER_MODE=ON -DBUILD_CONFIG=mysql_release -DFEATURE_SET=community Suggested fix: diff --git a/cmake/maintainer.cmake b/cmake/maintainer.cmake index 55e8566bccc..360cee09cba 100644 --- a/cmake/maintainer.cmake +++ b/cmake/maintainer.cmake @@ -88,6 +88,7 @@ IF(MY_COMPILER_IS_CLANG) # Disable a few default Clang++ warnings STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wno-null-conversion") STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wno-unused-private-field") + STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wno-missing-braces") STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wconditional-uninitialized") STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wdeprecated")