www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Avoiding Slice Checking

reply =?UTF-8?B?Ik5vcmRsw7Z3Ig==?= <per.nordlow gmail.com> writes:
As a follow up to

https://github.com/D-Programming-Language/dmd/pull/4293

would it be possible to also avoid range-checking in expressions 
such as

     x[0 .. $/n]

and

     x[$/n .. $]

where n is an integer compile-time constant >= 2.

I'm askingbecause this is a reoccurring pattern in D-style binary 
divide-and-conquer algorithms and would be a good show-case for D 
from a performance standpoint.

Is DMD prepared for (easily) adding this to e2ir.c and 
expression.c?
Jan 21 2015
parent reply "deadalnix" <deadalnix gmail.com> writes:
On Wednesday, 21 January 2015 at 23:50:44 UTC, Nordlöw wrote:
 As a follow up to

 https://github.com/D-Programming-Language/dmd/pull/4293

 would it be possible to also avoid range-checking in 
 expressions such as

     x[0 .. $/n]

 and

     x[$/n .. $]

 where n is an integer compile-time constant >= 2.

 I'm askingbecause this is a reoccurring pattern in D-style 
 binary divide-and-conquer algorithms and would be a good 
 show-case for D from a performance standpoint.

 Is DMD prepared for (easily) adding this to e2ir.c and 
 expression.c?
That is reasonable to expect a compiler to remove such a check with optimization enabled already. I'm not sure about DMD, but I'd be willing to bet that LDC and GDC already do it.
Jan 21 2015
parent "bearophile" <bearophileHUGS lycos.com> writes:
deadalnix:

 That is reasonable to expect a compiler to remove such a check 
 with optimization enabled already. I'm not sure about DMD, but 
 I'd be willing to bet that LDC and GDC already do it.
I think this thread is about an enhancement request for a guaranteed front-end optimization. Bye, bearophile
Jan 21 2015