diff options
| -rw-r--r-- | llvm/include/llvm/Support/Compiler.h | 10 | ||||
| -rw-r--r-- | llvm/lib/Support/regcomp.c | 7 | 
2 files changed, 7 insertions, 10 deletions
diff --git a/llvm/include/llvm/Support/Compiler.h b/llvm/include/llvm/Support/Compiler.h index e1f124379dd..43114ad3a43 100644 --- a/llvm/include/llvm/Support/Compiler.h +++ b/llvm/include/llvm/Support/Compiler.h @@ -16,9 +16,7 @@  #include "llvm/Config/llvm-config.h" -#ifdef __cplusplus  #include <new> -#endif  #include <stddef.h>  #if defined(_MSC_VER) @@ -254,8 +252,10 @@  #define LLVM_FALLTHROUGH [[fallthrough]]  #elif __has_cpp_attribute(gnu::fallthrough)  #define LLVM_FALLTHROUGH [[gnu::fallthrough]] -#elif !defined(__cplusplus) && __has_attribute(fallthrough) -#define LLVM_FALLTHROUGH __attribute__((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. +#define LLVM_FALLTHROUGH  #elif __has_cpp_attribute(clang::fallthrough)  #define LLVM_FALLTHROUGH [[clang::fallthrough]]  #else @@ -527,7 +527,6 @@ void AnnotateIgnoreWritesEnd(const char *file, int line);  #define LLVM_ENABLE_EXCEPTIONS 1  #endif -#ifdef __cplusplus  namespace llvm {  /// Allocate a buffer of memory with the given size and alignment. @@ -570,5 +569,4 @@ inline void deallocate_buffer(void *Ptr, size_t Size, size_t Alignment) {  } // End namespace llvm -#endif // __cplusplus  #endif diff --git a/llvm/lib/Support/regcomp.c b/llvm/lib/Support/regcomp.c index ee2a1d87a26..ca283869be9 100644 --- a/llvm/lib/Support/regcomp.c +++ b/llvm/lib/Support/regcomp.c @@ -48,7 +48,6 @@  #include "regex2.h"  #include "llvm/Config/config.h" -#include "llvm/Support/Compiler.h"  /* character-class table */  static struct cclass { @@ -538,7 +537,7 @@ p_ere_exp(struct parse *p)  		break;  	case '{':		/* okay as ordinary except if digit follows */  		REQUIRE(!MORE() || !isdigit((uch)PEEK()), REG_BADRPT); -		LLVM_FALLTHROUGH; +		/* fall through */  	default:  		ordinary(p, c);  		break; @@ -734,7 +733,7 @@ p_simp_re(struct parse *p,  		break;  	case '*':  		REQUIRE(starordinary, REG_BADRPT); -		LLVM_FALLTHROUGH; +		/* fall through */  	default:  		ordinary(p, (char)c);  		break; @@ -1636,7 +1635,7 @@ findmust(struct parse *p, struct re_guts *g)  					return;  				}  			} while (OP(s) != O_QUEST && OP(s) != O_CH); -			LLVM_FALLTHROUGH; +			/* fall through */  		default:		/* things that break a sequence */  			if (newlen > g->mlen) {		/* ends one */  				start = newstart;  | 

