[Issue 3681] ICE(go.c): when function takes too long to optimize, only with -O.

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Jan 11 21:10:39 PST 2010


http://d.puremagic.com/issues/show_bug.cgi?id=3681


Don <clugdbug at yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|ICE(go.c): Multiple         |ICE(go.c): when function
                   |assignments inside a        |takes too long to optimize,
                   |function, only with -O.     |only with -O.


--- Comment #3 from Don <clugdbug at yahoo.com.au> 2010-01-11 21:10:35 PST ---
The problem is simply that the optimiser needs too much time. The optimiser
loops for a maximum of 200 times, but to optimize this example requires 290
loops.
On the line it's faulting on:

-    assert(++iter < 200);
+    assert(++iter < 290);

However, there'll always be _some_ example where this happens. So a different
approach is required. Maybe after 200 check that the number of elements is
still decreasing on each pass through the loop; if it is, then just silently
exit the loop without ICEing.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list