This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Miscompilation of remainder expressions


Andrew Haley wrote:
Roberto Bagnara writes:
> Andrew Haley wrote:
> > Roberto Bagnara writes:
> > > > > > 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)?
> > > > No, there aren't. It would make more sense for you to wrap % in some
> > code that checks for this, rather than for us to slow down every division
> > for this one special case.
> > With all due respect, I must say I am shocked. I always thought
> (and taught) that we, Free Software people, value standard conformance
> and getting things right.


This is a disgreement about interpretation of the langauge in the
standard, which is:

"The result of the / operator is the quotient from the division of the
first operand by the second; the result of the % operator is the
remainder. In both operations, if the value of the second operand is
zero, the behavior is undefined. When integers are divided, the result
of the / operator is the algebraic quotient with any fractional part
discarded.87) If the quotient a/b is representable, the expression
(a/b)*b + a%b shall equal a."

If the quotient a/b is *not* representable, is the behaviour of %
well-defined or not?  It doesn't say.

To the point that, when a/b is not representable, raising SIGFPE for a%b is standard conformant behavior?

Note however that I am not saying that the standard is not defective.
Who knows how to write and submit C/C++ standard defect reports?
Let us do that, assuming that such a report has not been submitted
already.

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]