summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathan Huckleberry <nhuck@google.com>2019-08-21 17:07:43 +0000
committerNathan Huckleberry <nhuck@google.com>2019-08-21 17:07:43 +0000
commit01a413695c980613c8d737e7bba79131a6adc8a5 (patch)
tree1ae23c81a7b24a1e5a06227b9ea5738ebd13448a
parent7425179fee9b4ed1ff6d366ee06487f05a1c0ab3 (diff)
downloadbcm5719-llvm-01a413695c980613c8d737e7bba79131a6adc8a5.tar.gz
bcm5719-llvm-01a413695c980613c8d737e7bba79131a6adc8a5.zip
Fix -Wimplicit-fallthrough warnings in regcomp.c
Summary: Since clang does not support comment style fallthrough annotations these should be switched. Reviewers: aaron.ballman, nickdesaulniers, xbolva00 Reviewed By: aaron.ballman, nickdesaulniers, xbolva00 Subscribers: xbolva00, nickdesaulniers, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D66487 llvm-svn: 369549
-rw-r--r--llvm/include/llvm/Support/Compiler.h10
-rw-r--r--llvm/lib/Support/regcomp.c7
2 files changed, 10 insertions, 7 deletions
diff --git a/llvm/include/llvm/Support/Compiler.h b/llvm/include/llvm/Support/Compiler.h
index 43114ad3a43..e1f124379dd 100644
--- a/llvm/include/llvm/Support/Compiler.h
+++ b/llvm/include/llvm/Support/Compiler.h
@@ -16,7 +16,9 @@
#include "llvm/Config/llvm-config.h"
+#ifdef __cplusplus
#include <new>
+#endif
#include <stddef.h>
#if defined(_MSC_VER)
@@ -252,10 +254,8 @@
#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.
-#define LLVM_FALLTHROUGH
+#elif !defined(__cplusplus) && __has_attribute(fallthrough)
+#define LLVM_FALLTHROUGH __attribute__((fallthrough))
#elif __has_cpp_attribute(clang::fallthrough)
#define LLVM_FALLTHROUGH [[clang::fallthrough]]
#else
@@ -527,6 +527,7 @@ 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.
@@ -569,4 +570,5 @@ 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 ca283869be9..ee2a1d87a26 100644
--- a/llvm/lib/Support/regcomp.c
+++ b/llvm/lib/Support/regcomp.c
@@ -48,6 +48,7 @@
#include "regex2.h"
#include "llvm/Config/config.h"
+#include "llvm/Support/Compiler.h"
/* character-class table */
static struct cclass {
@@ -537,7 +538,7 @@ p_ere_exp(struct parse *p)
break;
case '{': /* okay as ordinary except if digit follows */
REQUIRE(!MORE() || !isdigit((uch)PEEK()), REG_BADRPT);
- /* fall through */
+ LLVM_FALLTHROUGH;
default:
ordinary(p, c);
break;
@@ -733,7 +734,7 @@ p_simp_re(struct parse *p,
break;
case '*':
REQUIRE(starordinary, REG_BADRPT);
- /* fall through */
+ LLVM_FALLTHROUGH;
default:
ordinary(p, (char)c);
break;
@@ -1635,7 +1636,7 @@ findmust(struct parse *p, struct re_guts *g)
return;
}
} while (OP(s) != O_QUEST && OP(s) != O_CH);
- /* fall through */
+ LLVM_FALLTHROUGH;
default: /* things that break a sequence */
if (newlen > g->mlen) { /* ends one */
start = newstart;
OpenPOWER on IntegriCloud