Integer overflow and underflow semantics?

John Colvin via Digitalmars-d digitalmars-d at puremagic.com
Thu Jul 17 01:50:11 PDT 2014


On Wednesday, 16 July 2014 at 21:26:41 UTC, Gary Willoughby wrote:
> This was asked a few years ago and i could find a definitive 
> answer.
>
> http://forum.dlang.org/thread/jo2c0a$31hh$1@digitalmars.com
>
> On Saturday, 5 May 2012 at 04:57:48 UTC, Alex Rønne Petersen 
> wrote:
>> I don't think the language really makes it clear whether 
>> overflows and underflows are well-defined. Do we guarantee 
>> that for any integral type T, T.max + 1 == T.min and T.min - 1 
>> == T.max?
>
> What is the current situation of integer overflow and underflow?

My understanding:

Every machine D will feasibly support will do T.max + 1 == T.min 
and T.min - 1 == T.max for native integral operations, signed or 
unsigned.

BUT:

We are using C(++) backends, which may assumed an undefined 
result for signed over/underflow. Optimisers could cause us pain 
here.

BUT:

It's probably not taken advantage of due to the amount of C code 
that assumes the expected semantics. Also, there may be ways of 
telling backends that it is defined and we may be using those 
ways, I don't know.


More information about the Digitalmars-d mailing list