GCC issues warnings like "division by zero" or "right shift count >= width of type" even though the corresponding code will never be executed (under a condition that is always false); it shouldn't do this, at least by default. For instance:
int tst (void) { int x; x = 0 ? 1 / 0 : 0; return x; if (0) { x = 1 / 0; x = 1 >> 128; } return x; } $ gcc-snapshot -std=c99 -O2 -c tst.c tst.c: In function 'tst': tst.c:8:13: warning: division by zero [-Wdiv-by-zero] tst.c:9:7: warning: right shift count >= width of type [enabled by default] One can see that GCC detects neither the first "return x;" nor the always-false condition, and issues spurious warnings for the lines: x = 1 / 0; x = 1 >> 128; On the other hand, GCC could successfully detect that the 1 / 0 in x = 0 ? 1 / 0 : 0; would never be executed. Note: always-false conditions occur in practice for platform-dependent code, e.g. by doing a test on integer types. -- Summary: gcc should not issue warnings for code that will never be executed Product: gcc Version: unknown Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: vincent at vinc17 dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44842