#include "llvm/Config/llvm-config.h"
-#ifdef __cplusplus
#include <new>
-#endif
#include <stddef.h>
#if defined(_MSC_VER)
#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
#define LLVM_ENABLE_EXCEPTIONS 1
#endif
-#ifdef __cplusplus
namespace llvm {
/// Allocate a buffer of memory with the given size and alignment.
} // End namespace llvm
-#endif // __cplusplus
#endif
#include "regex2.h"
#include "llvm/Config/config.h"
-#include "llvm/Support/Compiler.h"
/* character-class table */
static struct cclass {
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;
break;
case '*':
REQUIRE(starordinary, REG_BADRPT);
- LLVM_FALLTHROUGH;
+ /* fall through */
default:
ordinary(p, (char)c);
break;
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;