On 6/15/21 6:38 PM, Randy Dunlap wrote: > 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. Nope, I cannot repro that now. I'll check a few more arches... >> 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. -- ~Randy