https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96550
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Roger Wolff from comment #0) > So... without saying anything the compiler decided that my function will > never return. It might be right about that (That's not true: This is on an > embedded system and I can map RAM to address zero!) but then IMHO, a warning > would be warranted. A function goes from not being declared volatile by me > to being volatile (not returning). > > It's perfectly legal C code in there, but might not be what the user > wanted.... Just like if (a = 3) ... I think a warning might be issued. GCC *does* warn: null.c: In function ‘myfunc’: null.c:19:11: warning: null pointer dereference [-Wnull-dereference] 19 | mt.t[0] = 1; | ~~~~~~~~^~~