Simplify CM_FALLTHROUGH implementation

Use the macro now provided by KWSys instead of using `try_compile`
checks.  It will no longer consider the `__attribute__((fallthrough))`
variant, but compilers that don't have one of the modern attributes
shouldn't warn about not using one anyway.
This commit is contained in:
Brad King
2017-11-30 08:58:01 -05:00
parent d094b6796a
commit b2f612a0fa
5 changed files with 1 additions and 52 deletions

View File

@@ -1,11 +0,0 @@
int main(int argc, char* [])
{
int i = 3;
switch (argc) {
case 1:
i = 0;
__attribute__((fallthrough));
default:
return i;
}
}

View File

@@ -1,11 +0,0 @@
int main(int argc, char* [])
{
int i = 3;
switch (argc) {
case 1:
i = 0;
[[fallthrough]];
default:
return i;
}
}

View File

@@ -41,13 +41,6 @@ function(cm_check_cxx_feature name)
endif()
endfunction()
cm_check_cxx_feature(fallthrough)
if(NOT CMake_HAVE_CXX_FALLTHROUGH)
cm_check_cxx_feature(gnu_fallthrough)
if(NOT CMake_HAVE_CXX_GNU_FALLTHROUGH)
cm_check_cxx_feature(attribute_fallthrough)
endif()
endif()
cm_check_cxx_feature(make_unique)
if(CMake_HAVE_CXX_MAKE_UNIQUE)
set(CMake_HAVE_CXX_UNIQUE_PTR 1)

View File

@@ -1,11 +0,0 @@
int main(int argc, char* [])
{
int i = 3;
switch (argc) {
case 1:
i = 0;
[[gnu::fallthrough]];
default:
return i;
}
}

View File

@@ -19,22 +19,11 @@
#cmakedefine HAVE_UNSETENV
#cmakedefine CMAKE_USE_ELF_PARSER
#cmakedefine CMAKE_USE_MACH_PARSER
#cmakedefine CMake_HAVE_CXX_FALLTHROUGH
#cmakedefine CMake_HAVE_CXX_GNU_FALLTHROUGH
#cmakedefine CMake_HAVE_CXX_ATTRIBUTE_FALLTHROUGH
#cmakedefine CMake_HAVE_CXX_MAKE_UNIQUE
#define CMAKE_BIN_DIR "/@CMAKE_BIN_DIR@"
#define CMAKE_DATA_DIR "/@CMAKE_DATA_DIR@"
#if defined(CMake_HAVE_CXX_FALLTHROUGH)
#define CM_FALLTHROUGH [[fallthrough]]
#elif defined(CMake_HAVE_CXX_GNU_FALLTHROUGH)
#define CM_FALLTHROUGH [[gnu::fallthrough]]
#elif defined(CMake_HAVE_CXX_ATTRIBUTE_FALLTHROUGH)
#define CM_FALLTHROUGH __attribute__((fallthrough))
#else
#define CM_FALLTHROUGH
#endif
#define CM_FALLTHROUGH cmsys_FALLTHROUGH
#define CM_DISABLE_COPY(Class) \
Class(Class const&) = delete; \