On Thu, 8 Oct 2015, Matthew Fernandez wrote: > 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.
If you don't intend to send a patch, I suggest opening a bug report (but I expect it's a bug only in the source code, not in the libgcc binaries). -- Joseph S. Myers jos...@codesourcery.com