improved compiler warnings about missing attributes (#3232)

This commit is contained in:
Oliver Stöneberg 2021-04-25 12:52:09 +02:00 committed by GitHub
parent 4f43dbf954
commit dcc90c6dfa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 14 additions and 6 deletions

View File

@ -7,6 +7,13 @@ function(add_compile_options_safe FLAG)
endif()
endfunction()
function(target_compile_options_safe TARGET FLAG)
check_cxx_compiler_flag(${FLAG} _has_flag)
if (_has_flag)
target_compile_options(${TARGET} PRIVATE ${FLAG})
endif()
endfunction()
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
if(CMAKE_BUILD_TYPE MATCHES "Release")
# "Release" uses -O3 by default
@ -41,6 +48,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
add_compile_options(-Woverloaded-virtual) # when a function declaration hides virtual functions from a base class
add_compile_options(-Wno-maybe-uninitialized) # there are some false positives
add_compile_options(-Wsuggest-attribute=noreturn)
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wno-four-char-constants)
@ -52,6 +60,7 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options_safe(-Wdocumentation-pedantic)
add_compile_options_safe(-Wno-documentation-unknown-command)
add_compile_options_safe(-Wimplicit-fallthrough)
add_compile_options_safe(-Wmissing-noreturn)
if(ENABLE_COVERAGE OR ENABLE_COVERAGE_XML)
message(FATAL_ERROR "Do not use clang for generate code coverage. Use gcc.")

View File

@ -3,13 +3,12 @@ file(GLOB srcs "*.cpp")
add_library(tinyxml2_objs OBJECT ${srcs} ${hdrs})
# TODO: need to be fixed upstream
# TODO: needs to be fixed upstream
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
target_compile_options(tinyxml2_objs PRIVATE -Wno-suggest-attribute=format)
endif()
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.0.0")
target_compile_options(tinyxml2_objs PRIVATE -Wno-extra-semi-stmt)
endif()
target_compile_options_safe(tinyxml2_objs -Wno-extra-semi-stmt)
target_compile_options_safe(tinyxml2_objs -Wno-implicit-fallthrough)
endif()

View File

@ -451,7 +451,7 @@ private:
static bool removeTemplate(Token *tok);
/** Syntax error */
static void syntaxError(const Token *tok);
NORETURN static void syntaxError(const Token *tok);
static bool matchSpecialization(
const Token *templateDeclarationNameToken,

View File

@ -617,7 +617,7 @@ private:
* Send error message to error logger about internal bug.
* @param tok the token that this bug concerns.
*/
void cppcheckError(const Token *tok) const;
NORETURN void cppcheckError(const Token *tok) const;
/**
* Setup links for tokens so that one can call Token::link().