If BUG_ON() is used instead of BUG(), it means that probably the preferred outcome is to not BUG(), therefore the condition tested should be unlikely(). However, when CONFIG_PROFILE_ANNOTATED_BRANCHES is enabled, the hint is disabled, to avoid generating false-positive warnings caused by -Wmaybe-uninitialized. Signed-off-by: Igor Stoppa <igor.stoppa@xxxxxxxxxx> Cc: Arnd Bergmann <arnd@xxxxxxxx> Cc: linux-arch@xxxxxxxxxxxxxxx Cc: linux-kernel@xxxxxxxxxxxxxxx --- include/asm-generic/bug.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h index 20561a60db9c..b91273c36baf 100644 --- a/include/asm-generic/bug.h +++ b/include/asm-generic/bug.h @@ -58,8 +58,12 @@ struct bug_entry { #endif #ifndef HAVE_ARCH_BUG_ON +#ifdef CONFIG_PROFILE_ANNOTATED_BRANCHES +#define BUG_ON(condition) do { if (condition) BUG(); } while (0) +#else #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0) #endif +#endif #ifdef __WARN_FLAGS #define __WARN_TAINT(taint) __WARN_FLAGS(BUGFLAG_TAINT(taint)) @@ -183,7 +187,11 @@ void __warn(const char *file, int line, void *caller, unsigned taint, #endif #ifndef HAVE_ARCH_BUG_ON +#ifdef CONFIG_PROFILE_ANNOTATED_BRANCHES #define BUG_ON(condition) do { if (condition) BUG(); } while (0) +#else +#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0) +#endif #endif #ifndef HAVE_ARCH_WARN_ON -- 2.17.1