Not so simple
Some points and examples from an active compiler writer...
Take a look at the system include files on Linux. Huge amounts of conditional compilation, special-use macros, etc. Even finding where a given struct is defined can be quite hard, and some of them will have multiple definitions, depending on CPU, SysV versus ATT, Linux versus BSD versus HPUX versus AIX, etc. etc. I bow to the folks who maintain that stuff - its not something most programmers are capable of. Doing it all without inducing warnings in any circumstance has to be exceedingly difficult.
Distinguishing between development build and production build makes sense to me. Most of my source files are not dependent on stdio, so I don't include stdio.h or stdlib.h - just my own headers, and maybe string.h, typically. But, when chasing some kinds of problems, I need to have debug output, and that is simplest using printf. So, I can get reams of warnings from the compiler about those uses. I'm used to them. When I've found the problem and am checking in sources, all of those printfs will have been deleted.
I've put some warnings into my compiler that many don't have, e.g. dealing with uses of constant expressions having no effect. But, I want to be consistent in my usage. So, for some data sizes and the higher warning levels, I get warnings. So, I've added the ability to temporarily lower the warning level around a bit of code, then restore it after that code. Comments mandatory there, of course. I imagine similar things can happen with other compilers and languages.
So, I don't have -Werror, but I do have -Wall. And note that, annoyingly, -Wall with gcc does not enable *all* warnings. I haven't looked at them for a while, but mine are currently:
-Wall -Wpointer-arith -Wstrict-prototypes -Winline \
-Wundef -fno-exceptions -MMD -funsigned-char -fno-strict-aliasing \
-Wstrict-aliasing -fshort-enums -Wno-char-subscripts