Miscompilation of remainder expressions

Roberto Bagnara bagnara@cs.unipr.it
Tue Jan 16 18:05:00 GMT 2007


Robert Dewar wrote:
> Roberto Bagnara wrote:
>> Reading the thread "Autoconf manual's coverage of signed integer
>> overflow & portability" I was horrified to discover about GCC's
>> miscompilation of the remainder expression that causes INT_MIN % -1
>> to cause a SIGFPE on CPUs of the i386 family.  Are there plans to
>> fix this bug (which, to me, looks quite serious)?
>> All the best,
>>
>>     Roberto
>>
>> P.S. I checked whether this bug affects my code and it does.
>>       Before yesterday I was completely unsuspecting of such
>>       a fundamental flaw... I wonder how many know about it.
> 
> It's truly amazing for real code to be computing remainders
> in this domain ... seems a bad idea to me, since very few
> people are comfortably aware of what remainder means for
> such cases.

Everyone knows that dividing a number by -1 or 1 gives
a 0 remainder.  To the contrary, no one expects a%b to
raise SIFPE when b != 0.

-- 
Prof. Roberto Bagnara
Computer Science Group
Department of Mathematics, University of Parma, Italy
http://www.cs.unipr.it/~bagnara/
mailto:bagnara@cs.unipr.it



More information about the Gcc mailing list