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.

llvm-svn: 278868
This commit is contained in:
Justin Bogner 2016-08-16 23:24:13 +00:00
parent 7ad324b396
commit a36f4a25b3
1 changed files with 13 additions and 0 deletions

View File

@ -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__