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 ***