http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59939
--- Comment #8 from Marc Glisse <glisse at gcc dot gnu.org> --- I think Andrew's point is that we might have: #if T_IS_UNSIGNED typedef unsigned T; #else typedef int T; #endif int f(T,T); and thus the following: T_IS_UNSIGNED || f(a,b) can be used as a short version for: #if T_IS_UNSIGNED 1 #else f(a,b) #endif where the warning is not wanted. As with many things, it is a matter of taste whether you want to ignore warnings in obviously dead code.