Marking BUG() unreachable helps us silence unnecessary warnings e.g.
"warning: control reaches end of non-void function [-Wreturn-type]" like
the code below.

   int foo()
   {
   ...
        if (XXX)
                return 0;
        else if (YYY)
                return 1;
        else
                BUG();
   }

Signed-off-by: Naohiro Aota <naohiro.a...@wdc.com>
---
 kerncompat.h | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/kerncompat.h b/kerncompat.h
index 01fd93a7b540..7060326fe4f4 100644
--- a/kerncompat.h
+++ b/kerncompat.h
@@ -333,7 +333,11 @@ static inline void assert_trace(const char *assertion, 
const char *filename,
 #endif
 
 #define BUG_ON(c) bugon_trace(#c, __FILE__, __func__, __LINE__, (long)(c))
-#define BUG() BUG_ON(1)
+#define BUG()                          \
+do {                                   \
+       BUG_ON(1);                      \
+       __builtin_unreachable();        \
+} while (0)
 #define WARN_ON(c) warning_trace(#c, __FILE__, __func__, __LINE__, (long)(c))
 
 #define container_of(ptr, type, member) ({                      \
-- 
2.31.1

Reply via email to