On 5/12/23 19:52, Florian Weimer wrote: > * Florian Weimer: > >> In summary, all these seems to be good candidates for errors by default: >> >> * int-conversion as errors (already raised separately >> * -Wint-conversion for ?: >> * parameter names in non-prototype function declarations >> * the union wait function pointer compatibility kludge >> * return-with-out-value for non-void functions >> * -Wincomatible-pointer-types warning for ?: (but no error yet, see below) > I think we have another problem. > > We do not warn by default for: > > int x; > unsigned *p; > > p = &x; > > Isn't that a conformance issue because the pointers are incompatible, > requiring a diagnostic? > > Furthermore, Unlike the char case, this tends to introduce > strict-aliasing violations, so there is a good reason to treat this > variant as an error (even if we would only warn for char * and > unsigned char *). Isn't this allowed by the standard ? 6.5.7. Expressions states: > An object shall have its stored value accessed only by an lvalue expression that has one of thefollowing types:[...] - a type that is the signed or unsigned type corresponding to the effective type of the object