Integer overflow and underflow semantics?

Tobias Müller via Digitalmars-d digitalmars-d at puremagic.com
Sun Jul 20 04:09:45 PDT 2014


"Marc Schütz" <schuetzm at gmx.net> wrote:
> On Saturday, 19 July 2014 at 19:49:24 UTC, Ola Fosheim Grøstad wrote:
>> On Saturday, 19 July 2014 at 08:34:39 UTC, Kagamin wrote:
>>> Can't it simply generate code as is? Seems wasteful to spend >> compilation time on this.
>> 
>> Not if you want fast code, consider a template with:
>> 
>> if (a.length+M < b.length+N) {}
>> 
>> then you alias b = a in the template instantiation:
>> 
>> if(a.length+M < a.length+N){}
>> 
>> you want this reduced to:
>> 
>> if (M<N){
>> }
>> 
>> which can be resolved at compile time.
> 
> Yes, but that is the optimizer's job. The front-end doesn't need to spend
> time on it, if the back-end then anyway does the same optimization again.

I don't think anyone has said that the frontend does that.
But the language semantics forbid such optimizations if overflow is defined
as wrapping.
If the optimizer respects that is a different chapter, as the experiment
with GDC shows.

Tobi


More information about the Digitalmars-d mailing list