Bug 3370 – Compile-time global dynamic immutable arrays should NOT be constant-folded.
Status
RESOLVED
Resolution
DUPLICATE
Severity
critical
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
Other
OS
Windows
Creation time
2009-10-06T15:04:00Z
Last change time
2015-06-09T01:29:41Z
Keywords
performance
Assigned to
nobody
Creator
dsimcha
Comments
Comment #0 by dsimcha — 2009-10-06T15:04:05Z
The following program runs out of memory b/c foo is apparently allocated and created every time through the loop:
import std.math, core.memory, std.stdio;
immutable real[] foo = [0,1,2,3,4];
void main() {
GC.disable;
foreach(i; 0..1_000_000_000) {
auto bar = poly(i, foo);
}
}
Changing the immutable to an enum results in the program still running out of memory.
Removing all references to immutability fixes the problem.
Changing the array to a static array fixes the problem.
Initializing the array inside main() fixes the problem.
Comment #1 by dsimcha — 2010-07-25T10:09:58Z
Marking as dup of bug 4298. Although this report was filed first, 4298 is were all the discussion is, and it's a somewhat better bug report.
*** This issue has been marked as a duplicate of issue 4298 ***