On Wednesday, February 05, 2003 2:04 PM [GMT+1=CET],
Matthias Troyer <[EMAIL PROTECTED]> wrote:

> On Wednesday, February 5, 2003, at 04:24 PM, Dave Abrahams wrote:
>
> > On Wednesday, February 05, 2003 10:11 AM [GMT+1=CET],
> > Matthias Troyer <[EMAIL PROTECTED]> wrote:
> >
> > > I am looking into it but already have a conjecture. When using signed
> > > 64 bit integers the Cray compiler (with optimization turned on) uses
> > > the floating point units to actually perform the operations in 46 bit
> > > arithmetic. This speeds up things but causes compatibility problems.
> > > In
> > > the case of the jam sources we could avoid this "optimization" by
> > > using
> > > unsigned types. Is it possible to use an unsigned integer here to
> > > avoid
> > > similar problems?
> >
> >
> > Just to be clear, we didn't avoid an optimization by using unsigned
> > types.
> > We avoided undefined behavior due to overflow in signed integers, or
> > conversions from unsigned->signed.
>
> Actually there were two problems. One was the one you mentioned above.
> The other was that we needed either a masking to 32 bits or the type
> made unsigned to prevent an optimization (integer calculations done on
> FPU), which led to non-conforming overflow behavior.


I never got very clear feedback from your guys about what was happening,
but:

If the calculations are only done in the FPU when the integers are signed,
then the overflow behavior is conforming, since signed integer overflow is
undefined behavior.

-- 
Dave Abrahams
Boost Consulting
http://www.boost-consulting.com

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to