https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96550
--- Comment #5 from Roger Wolff <R.E.Wolff at BitWizard dot nl> --- Guys, The compiler found a bug in my code, but it didn't tell me. Like the if (a = 3) situation, the compiler is correct when it compiles the code according to the C rules. I like to compile my code with -Wall for this reason: 99% of the cases, the compiler will find and warn about stupid stuff that's not a problem. But in that 1% of the cases, the compiler will warn about something that's a bug that would've taken lots of time to find. SO when you get that one warning, you have the compiler telling you: You have a bug on line X of your program. That's what could've happened here: I had a bug in my code, but didn't expect the binary to suddenly go from 75k to 14k because of a bug. Something like: Line 18: dereferencing NULL pointer is undefined behaviour. Assuming execution stops here. would be a usable error message. This is actually one of those 1% of the cases where the warning COULD have been given and finding the bug would've been seconds whereas without the warning lots of time was wasted looking for the bug in the wrong places. This is not a bug per se, you can suggest workarounds for: "What if you want to store stuff at address zero" all you want, but I had a bug and I've asked gcc to issue warnings where I'm doing fishy stuff that might be a bug. And I didn't get that warning. So this issue is not a bug in that the wrong code is generated, but an enhancement request: Please issue that warning. All this is "not for me": I've now run into this issue, the bug in my project has been fixed and for me it's on to the rest of the code. And I've been subjected to this "way of gcc telling me there is a bug", so in the future, if I make this mistake again, I'll not spend as much time on it as I did this weekend. So I'm trying to make things easier for those others that might run into this in the future.