[llvm] r278868 - Introduce LLVM_FALLTHROUGH, which expands to the C++17 attribute.
Justin Bogner via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 16 16:24:13 PDT 2016
Author: bogner
Date: Tue Aug 16 18:24:13 2016
New Revision: 278868
URL: http://llvm.org/viewvc/llvm-project?rev=278868&view=rev
Log:
Introduce LLVM_FALLTHROUGH, which expands to the C++17 attribute.
This allows you to annotate switch case fallthrough in a better way
than a "// FALLTHROUGH" comment. Eventually it would be nice to turn
on -Wimplicit-fallthrough, if we can get the code base clean.
Modified:
llvm/trunk/include/llvm/Support/Compiler.h
Modified: llvm/trunk/include/llvm/Support/Compiler.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Compiler.h?rev=278868&r1=278867&r2=278868&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/Compiler.h (original)
+++ llvm/trunk/include/llvm/Support/Compiler.h Tue Aug 16 18:24:13 2016
@@ -33,6 +33,10 @@
# define __has_attribute(x) 0
#endif
+#ifndef __has_cpp_attribute
+# define __has_cpp_attribute(x) 0
+#endif
+
#ifndef __has_builtin
# define __has_builtin(x) 0
#endif
@@ -228,6 +232,15 @@
#define LLVM_ATTRIBUTE_RETURNS_NOALIAS
#endif
+/// LLVM_FALLTHROUGH - Mark fallthrough cases in switch statements.
+#if __has_cpp_attribute(fallthrough)
+#define LLVM_FALLTHROUGH [[fallthrough]]
+#elif __has_cpp_attribute(clang::fallthrough)
+#define LLVM_FALLTHROUGH [[clang::fallthrough]]
+#else
+#define LLVM_FALLTHROUGH
+#endif
+
/// LLVM_EXTENSION - Support compilers where we have a keyword to suppress
/// pedantic diagnostics.
#ifdef __GNUC__
More information about the llvm-commits
mailing list