From 0c1f598cfa39091c575fc9f1df128fd2236bc506 Mon Sep 17 00:00:00 2001 From: George Rimar Date: Fri, 12 May 2017 06:53:48 +0000 Subject: [Support/Compiler.h] - Use gnu::fallthrough for LLVM_FALLTHROUGH when available. 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 | 2 ++ 1 file changed, 2 insertions(+) (limited to 'llvm/include') diff --git a/llvm/include/llvm/Support/Compiler.h b/llvm/include/llvm/Support/Compiler.h index a29240d35be..be9e4654001 100644 --- a/llvm/include/llvm/Support/Compiler.h +++ b/llvm/include/llvm/Support/Compiler.h @@ -227,6 +227,8 @@ /// 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. -- cgit v1.2.3