mirror of
https://github.com/reactos/ninja.git
synced 2024-11-30 23:20:40 +00:00
Merge pull request #1417 from stefanb2/topic-silence-gcc-fallthrough-warnings
Silence GCC -Wimplicit-fallthrough warnings
This commit is contained in:
commit
fccab7408a
@ -76,11 +76,17 @@ uint64_t MurmurHash64A(const void* key, size_t len) {
|
||||
switch (len & 7)
|
||||
{
|
||||
case 7: h ^= uint64_t(data[6]) << 48;
|
||||
NINJA_FALLTHROUGH;
|
||||
case 6: h ^= uint64_t(data[5]) << 40;
|
||||
NINJA_FALLTHROUGH;
|
||||
case 5: h ^= uint64_t(data[4]) << 32;
|
||||
NINJA_FALLTHROUGH;
|
||||
case 4: h ^= uint64_t(data[3]) << 24;
|
||||
NINJA_FALLTHROUGH;
|
||||
case 3: h ^= uint64_t(data[2]) << 16;
|
||||
NINJA_FALLTHROUGH;
|
||||
case 2: h ^= uint64_t(data[1]) << 8;
|
||||
NINJA_FALLTHROUGH;
|
||||
case 1: h ^= uint64_t(data[0]);
|
||||
h *= m;
|
||||
};
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include <algorithm>
|
||||
#include <string.h>
|
||||
#include "string_piece.h"
|
||||
#include "util.h"
|
||||
|
||||
// MurmurHash2, by Austin Appleby
|
||||
static inline
|
||||
@ -40,7 +41,9 @@ unsigned int MurmurHash2(const void* key, size_t len) {
|
||||
}
|
||||
switch (len) {
|
||||
case 3: h ^= data[2] << 16;
|
||||
NINJA_FALLTHROUGH;
|
||||
case 2: h ^= data[1] << 8;
|
||||
NINJA_FALLTHROUGH;
|
||||
case 1: h ^= data[0];
|
||||
h *= m;
|
||||
};
|
||||
|
@ -197,7 +197,7 @@ bool CanonicalizePath(char* path, size_t* len, uint64_t* slash_bits,
|
||||
case '\\':
|
||||
bits |= bits_mask;
|
||||
*c = '/';
|
||||
// Intentional fallthrough.
|
||||
NINJA_FALLTHROUGH;
|
||||
case '/':
|
||||
bits_mask <<= 1;
|
||||
}
|
||||
|
14
src/util.h
14
src/util.h
@ -34,6 +34,20 @@ using namespace std;
|
||||
/// Log a fatal message and exit.
|
||||
NORETURN void Fatal(const char* msg, ...);
|
||||
|
||||
// Have a generic fall-through for different versions of C/C++.
|
||||
#if defined(__cplusplus) && __cplusplus >= 201703L
|
||||
#define NINJA_FALLTHROUGH [[fallthrough]]
|
||||
#elif defined(__cplusplus) && __cplusplus >= 201103L && defined(__clang__)
|
||||
#define NINJA_FALLTHROUGH [[clang::fallthrough]]
|
||||
#elif defined(__cplusplus) && __cplusplus >= 201103L && defined(__GNUC__) && \
|
||||
__GNUC__ >= 7
|
||||
#define NINJA_FALLTHROUGH [[gnu::fallthrough]]
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 7 // gcc 7
|
||||
#define NINJA_FALLTHROUGH __attribute__ ((fallthrough))
|
||||
#else // C++11 on gcc 6, and all other cases
|
||||
#define NINJA_FALLTHROUGH
|
||||
#endif
|
||||
|
||||
/// Log a warning message.
|
||||
void Warning(const char* msg, ...);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user