diff options
author | Marek Polacek <polacek@redhat.com> | 2021-11-22 11:29:40 -0500 |
---|---|---|
committer | Marek Polacek <polacek@redhat.com> | 2021-11-22 21:43:38 -0500 |
commit | 630686f93f0018fa1ef128aa673fddd302cc83e1 (patch) | |
tree | 26e9d26bbbc8b103e2c8199ce6d818d3f90bae7d /libcpp | |
parent | e888bea2384a0d8d29a6545c4f57f41cb49df0a6 (diff) | |
download | gcc-630686f93f0018fa1ef128aa673fddd302cc83e1.zip gcc-630686f93f0018fa1ef128aa673fddd302cc83e1.tar.gz gcc-630686f93f0018fa1ef128aa673fddd302cc83e1.tar.bz2 |
libcpp: Use [[likely]] conditionally
Let's hide [[likely]] behind a macro, to suppress warnings if the
compiler doesn't support it.
Co-authored-by: Jonathan Wakely <jwakely@redhat.com>
PR preprocessor/103355
libcpp/ChangeLog:
* lex.c: Use ATTR_LIKELY instead of [[likely]].
* system.h (ATTR_LIKELY): Define.
Diffstat (limited to 'libcpp')
-rw-r--r-- | libcpp/lex.c | 2 | ||||
-rw-r--r-- | libcpp/system.h | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/libcpp/lex.c b/libcpp/lex.c index 94c36f0..9c27d8b 100644 --- a/libcpp/lex.c +++ b/libcpp/lex.c @@ -1286,7 +1286,7 @@ namespace bidi { case kind::RTL: /* These aren't popped by a PDF/PDI. */ break; - [[likely]] case kind::NONE: + ATTR_LIKELY case kind::NONE: break; default: abort (); diff --git a/libcpp/system.h b/libcpp/system.h index ee5fbe2..f6fc583 100644 --- a/libcpp/system.h +++ b/libcpp/system.h @@ -422,6 +422,16 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; #define gcc_checking_assert(EXPR) ((void)(0 && (EXPR))) #endif +#ifdef __has_cpp_attribute +# if __has_cpp_attribute(likely) +# define ATTR_LIKELY [[likely]] +# elif __has_cpp_attribute(__likely__) +# define ATTR_LIKELY [[__likely__]] +# else +# define ATTR_LIKELY +# endif +#endif + /* Poison identifiers we do not want to use. */ #if (GCC_VERSION >= 3000) #undef calloc |