Array bound checks removal increasing importance

deadalnix via Digitalmars-d digitalmars-d at puremagic.com
Sun Jun 1 13:46:05 PDT 2014


On Saturday, 31 May 2014 at 10:56:06 UTC, bearophile wrote:
> void main() {
>     int[5] data;
>     foreach (const i; 0 .. 10)
>         data[i] = 0;
>     foreach (immutable i; 0 .. 10)
>         data[i] = 0;
>     int[10] big;
>     foreach (const i, x; big)
>         data[i] = x;
> }
>
>
> But the compiler must recognize this as correct code:
>
>
> void main() {
>     int[5] data;
>     foreach (const i; 0 .. 10)
>         if (i < 5)
>             data[i] = 0;
> }
>
>
> Can this logic be added to D?
>
>
> More info on the topic:
> http://en.wikipedia.org/wiki/Bounds-checking_elimination
> http://ssw.jku.at/Research/Papers/Wuerthinger07/Wuerthinger07.pdf
>
> Bye,
> bearophile

What do GDC or LDC generate for these sample code with 
optimizations on ?


More information about the Digitalmars-d mailing list