* Gabriel Ravier:

> 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

Ahh, so no strict aliasing violation at least.

Still I think we are required to diagnose the constraint violation in
the pointer assignment.  (Cerberus quotes C11 ยง6.5.16.1#1, bullet 3
and 4 as violation.)

Reply via email to