From: Marek Polacek Date: Mon, 22 Nov 2021 16:29:40 +0000 (-0500) Subject: libcpp: Use [[likely]] conditionally X-Git-Tag: basepoints/gcc-13~2854 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=630686f93f0018fa1ef128aa673fddd302cc83e1;p=thirdparty%2Fgcc.git 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 PR preprocessor/103355 libcpp/ChangeLog: * lex.c: Use ATTR_LIKELY instead of [[likely]]. * system.h (ATTR_LIKELY): Define. --- diff --git a/libcpp/lex.c b/libcpp/lex.c index 94c36f0d0148..9c27d8b5a085 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 ee5fbe288892..f6fc583ab806 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