From 5da3fb06669fd9897caf7f6002b5d72efa059dcc Mon Sep 17 00:00:00 2001 From: teboring Date: Wed, 29 Jul 2015 10:44:19 -0700 Subject: [PATCH] Move the definition of GOOGLE_FALLTHROUGH_INTENDED to port.h --- src/google/protobuf/map_entry_lite.h | 12 ------------ src/google/protobuf/stubs/port.h | 13 ++++++++++++- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/google/protobuf/map_entry_lite.h b/src/google/protobuf/map_entry_lite.h index 8de11766d2..52746da595 100644 --- a/src/google/protobuf/map_entry_lite.h +++ b/src/google/protobuf/map_entry_lite.h @@ -162,19 +162,7 @@ class MapEntryLite : public MessageLite { if (!KeyWireHandler::Read(input, mutable_key())) return false; set_has_key(); if (!input->ExpectTag(kValueTag)) break; - // BEGIN GOOGLE LOCAL MODIFICATION - // Add __has_cpp_attribute and NaCl and Emscripten checks. -#if defined(__clang__) && defined(__has_cpp_attribute) \ - && !defined(GOOGLE_PROTOBUF_OS_APPLE) -#if defined(GOOGLE_PROTOBUF_OS_NACL) || defined(EMSCRIPTEN) - [[clang::fallthrough]]; -#elif __has_cpp_attribute(clang::fallthrough) - [[clang::fallthrough]]; -#endif -#else GOOGLE_FALLTHROUGH_INTENDED; -#endif - // END GOOGLE LOCAL MODIFICATION case kValueTag: if (!ValueWireHandler::Read(input, mutable_value())) return false; diff --git a/src/google/protobuf/stubs/port.h b/src/google/protobuf/stubs/port.h index c86cf35be2..8a5d1a13e8 100644 --- a/src/google/protobuf/stubs/port.h +++ b/src/google/protobuf/stubs/port.h @@ -204,8 +204,19 @@ static const uint64 kuint64max = GOOGLE_ULONGLONG(0xFFFFFFFFFFFFFFFF); #define GOOGLE_SAFE_CONCURRENT_WRITES_END() #endif +#if defined(__clang__) && defined(__has_cpp_attribute) \ + && !defined(GOOGLE_PROTOBUF_OS_APPLE) +# if defined(GOOGLE_PROTOBUF_OS_NACL) || defined(EMSCRIPTEN) || \ + __has_cpp_attribute(clang::fallthrough) +# define GOOGLE_FALLTHROUGH_INTENDED [[clang::fallthrough]] +# endif +#endif + +#ifndef GOOGLE_FALLTHROUGH_INTENDED +# define GOOGLE_FALLTHROUGH_INTENDED +#endif + #define GOOGLE_GUARDED_BY(x) -#define GOOGLE_FALLTHROUGH_INTENDED #define GOOGLE_ATTRIBUTE_COLD // x86 and x86-64 can perform unaligned loads/stores directly.