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 ?
