Division by INT64_MIN

Matthew Fernandez matthew.fernandez@gmail.com
Thu Oct 8 05:10:00 GMT 2015


On 06/10/15 01:09, Joseph Myers wrote:
> On Mon, 5 Oct 2015, Matthew Fernandez wrote:
>
>> on x86 is emitted as a call to __divdi3. If the numerator or denominator are
>> negative, __divdi3 negates them. If either of these values is INT64_MIN, I
>> believe this negation is undefined. Is this correct? If this is the case, then
>> it seems code like "INT64_MIN / INT64_MIN" which should be perfectly legal
>> accidentally causes undefined behaviour via libgcc. In practice, everything
>> seems to work as expected, but it seems to me that the C code of __divdi3
>> should not be relying on these negations working consistently.
>
> It sounds like some casts to UDWtype should be inserted so the negation
> takes place on an unsigned type.

Thanks for the speedy response, Joseph. Should I open a new bug report about this? I suspect there 
are GCC developers out there who would disagree that this constitutes a bug.



More information about the Gcc mailing list