From b62f430846b071c9fda2aa51dd8e3f55d42ee657 Mon Sep 17 00:00:00 2001 From: George Rimar Date: Fri, 12 May 2017 06:53:48 +0000 Subject: [PATCH] [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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302878 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/Compiler.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/llvm/Support/Compiler.h b/include/llvm/Support/Compiler.h index a29240d35be..be9e4654001 100644 --- a/include/llvm/Support/Compiler.h +++ b/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. -- 2.11.0