On 6/15/21 5:32 PM, Linus Torvalds wrote: > On Tue, Jun 15, 2021 at 4:58 PM Randy Dunlap <rdunlap@xxxxxxxxxxxxx> wrote: >> >> Some implementations of BUG() are macros, not functions, > > Not "some", I think. Most. > >> so "unreachable" is not applicable AFAIK. > > Sure it is. One common pattern is the x86 one: > > #define BUG() \ > do { \ > instrumentation_begin(); \ > _BUG_FLAGS(ASM_UD2, 0); \ > unreachable(); \ > } while (0) duh. > and that "unreachable()" is exactly what I'm talking about. > > So I repeat: what completely broken compiler / config / architecture > is it that needs that "return 0" after a BUG() statement? I have seen it on ia64 -- most likely GCC 9.3.0, but I'll have to double check that. > Because that environment is broken, and the warning is bogus and wrong. > > It might not be the compiler. It might be some architecture that does > this wrong. It might be some very particular configuration that does > something bad and makes the "unreachable()" not work (or not exist). > > But *that* is the bug that should be fixed. Not adding a pointless and > incorrect line that makes no sense, just to hide the real bug.