mirror of
https://github.com/libevent/libevent.git
synced 2025-01-31 09:12:55 +08:00
Fix clang 3 (some versions) misbehaviour for __has_attribute()
Refs: #447 Clang: https://reviews.llvm.org/rL223468 ("Modify __has_attribute so that it only looks for GNU-style attributes") (cherry picked from commit ffbce578c40a06491ce6585ab2d82ebb69a52d30)
This commit is contained in:
parent
230af9f0e8
commit
df01f798c2
@ -50,8 +50,18 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if !defined(__has_attribute)
|
||||
#define __has_attribute(x) 0
|
||||
/* __has_attribute() wrapper */
|
||||
#ifdef __has_attribute
|
||||
#define EVUTIL_HAS_ATTRIBUTE __has_attribute
|
||||
#endif
|
||||
/** clang 3 __has_attribute misbehaves in some versions */
|
||||
#if defined(__clang__) && \
|
||||
__clang__ == 1 && __clang_major__ == 3 && \
|
||||
(__clang_minor__ >= 2 && __clang_minor__ <= 5)
|
||||
#undef EVUTIL_HAS_ATTRIBUTE
|
||||
#endif
|
||||
#ifndef EVUTIL_HAS_ATTRIBUTE
|
||||
#define EVUTIL_HAS_ATTRIBUTE(x) 0
|
||||
#endif
|
||||
|
||||
/* If we need magic to say "inline", get it for free internally. */
|
||||
@ -312,7 +322,7 @@ ev_int32_t evutil_weakrand_range_(struct evutil_weakrand_state *seed, ev_int32_t
|
||||
#define EVUTIL_UNLIKELY(p) (p)
|
||||
#endif
|
||||
|
||||
#if __has_attribute(fallthrough)
|
||||
#if EVUTIL_HAS_ATTRIBUTE(fallthrough)
|
||||
#define EVUTIL_FALLTHROUGH __attribute__((fallthrough))
|
||||
#else
|
||||
#define EVUTIL_FALLTHROUGH /* fallthrough */
|
||||
|
Loading…
x
Reference in New Issue
Block a user