[Support/Compiler.h] - Use gnu::fallthrough for LLVM_FALLTHROUGH when available.
authorGeorge Rimar <grimar@accesssoftek.com>
Fri, 12 May 2017 06:53:48 +0000 (06:53 +0000)
committerGeorge Rimar <grimar@accesssoftek.com>
Fri, 12 May 2017 06:53:48 +0000 (06:53 +0000)
I tried to compile LLD using GCC 7.1.0 and got warnings like
"warning: this statement may fall through [-Wimplicit-fallthrough=]"
(some more details are here: D32907)

GCC's __cplusplus value is 201402L by default, so macro expands to nothing,
though GCC 7 has support for [[fallthrough]].

Patch uses gnu::fallthrough when it is available and fixes warning I am observing.

Initial idea of way to fix belongs to Davide Italiano.

Differential revision: https://reviews.llvm.org/D33036

llvm-svn: 302878

llvm/include/llvm/Support/Compiler.h

index a29240d..be9e465 100644 (file)
 /// LLVM_FALLTHROUGH - Mark fallthrough cases in switch statements.
 #if __cplusplus > 201402L && __has_cpp_attribute(fallthrough)
 #define LLVM_FALLTHROUGH [[fallthrough]]
+#elif __has_cpp_attribute(gnu::fallthrough)
+#define LLVM_FALLTHROUGH [[gnu::fallthrough]]
 #elif !__cplusplus
 // Workaround for llvm.org/PR23435, since clang 3.6 and below emit a spurious
 // error when __has_cpp_attribute is given a scoped attribute in C mode.