summaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2021-11-22 11:29:40 -0500
committerMarek Polacek <polacek@redhat.com>2021-11-22 21:43:38 -0500
commit630686f93f0018fa1ef128aa673fddd302cc83e1 (patch)
tree26e9d26bbbc8b103e2c8199ce6d818d3f90bae7d /libcpp
parente888bea2384a0d8d29a6545c4f57f41cb49df0a6 (diff)
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.c2
-rw-r--r--libcpp/system.h10
2 files changed, 11 insertions, 1 deletions
diff --git a/libcpp/lex.c b/libcpp/lex.c
index 94c36f0d014..9c27d8b5a08 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 ee5fbe28889..f6fc583ab80 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