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


Don <clugd...@yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |patch


--- Comment #5 from Don <clugd...@yahoo.com.au> 2010-11-22 01:26:45 PST ---
This turns out to be very simple. When merging blocks together, we need to
allow one pass per block, since it only merges one block per pass.
In the test case, there are more than 200 blocks, and they all get merged into
one.


PATCH:
blockopt.c, blockopt(), line 595

void blockopt(int iter)
{   block *b;
    int count;

    if (OPTIMIZER)
    {
+        int iterationLimit = 200;
+        if (iterationLimit < numblks)
+            iterationLimit = numblks;
        count = 0;
        do
        {

and line 622
            do
            {
                compdfo();              /* compute depth first order (DFO) */
                elimblks();             /* remove blocks not in DFO      */
-                assert(count < 200);
+                assert(count < iterationLimit);
                count++;
            } while (mergeblks());      /* merge together blocks         */

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

Reply via email to