https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103355
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Last reconfirmed| |2021-11-22
Status|UNCONFIRMED |NEW
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Martin Liška from comment #0)
> [[likely]] and [[unlikely]] come from C++20, or?
Yes. It should really be guarded by #if __has_cpp_attribute(likely)
Or use [[__likely__]] which recent versions of GCC will accept in C++11 mode,
but non-GCC compilers will warn about.
Or both:
--- a/libcpp/lex.c
+++ b/libcpp/lex.c
@@ -1286,7 +1286,14 @@ namespace bidi {
case kind::RTL:
/* These aren't popped by a PDF/PDI. */
break;
- [[likely]] case kind::NONE:
+#ifdef __has_cpp_attribute
+# if __has_cpp_attribute(likely)
+ [[likely]]
+# elif __has_cpp_attribute(__likely__)
+ [[__likely__]]
+# endif
+#endif
+ case kind::NONE:
break;
default:
abort ();