diff --git a/esphome/core/macros.h b/esphome/core/macros.h index 79878ce714..35018f28c8 100644 --- a/esphome/core/macros.h +++ b/esphome/core/macros.h @@ -5,11 +5,13 @@ // Branch prediction hints for performance-critical paths #if defined(__GNUC__) || defined(__clang__) +// GCC and Clang: use __builtin_expect for better optimization #define ESPHOME_LIKELY(x) __builtin_expect(!!(x), 1) #define ESPHOME_UNLIKELY(x) __builtin_expect(!!(x), 0) #else -#define ESPHOME_LIKELY(x) (x) -#define ESPHOME_UNLIKELY(x) (x) +// Other C++20 compilers: use standard attributes +#define ESPHOME_LIKELY(x) (x) [[likely]] +#define ESPHOME_UNLIKELY(x) (x) [[unlikely]] #endif #ifdef USE_ARDUINO