mpreduce: Debug decomposition corrupts initial state for code generator.
[u/mdw/catacomb] / mpreduce.c
index d99ff16..52e86a1 100644 (file)
@@ -101,7 +101,8 @@ int mpreduce_create(mpreduce *r, mp *p)
       case X0 | 0: st =  Z; printf("+ %lu\n", i - 1); break;
     }
   }
-  if (st >= X) printf("+ %lu\n", i);
+  if (st >= X) printf("+ %lu\n", i - 1);
+  st = Z;
 #endif
 
   for (i = 0, mp_scan(&sc, p); i < d  - 1 && mp_step(&sc); i++) {
@@ -285,9 +286,9 @@ mp *mpreduce_do(mpreduce *r, mp *d, mp *x)
        *vl = 0;
        run(r->iv, il, vl, z);
 #ifdef DEBUG
-  MP_PRINTX("x", x);
-  mp_div(0, &_rr, x, r->p);
-  assert(MP_EQ(_r, _rr));
+       MP_PRINTX("x", x);
+       mp_div(0, &_rr, x, r->p);
+       assert(MP_EQ(_r, _rr));
 #endif
       }
     }
@@ -297,9 +298,9 @@ mp *mpreduce_do(mpreduce *r, mp *d, mp *x)
        *vl &= ((1 << r->s) - 1);
        run(r->iv + r->in, il + r->in, vl, z);
 #ifdef DEBUG
-  MP_PRINTX("x", x);
-  mp_div(0, &_rr, x, r->p);
-  assert(MP_EQ(_r, _rr));
+       MP_PRINTX("x", x);
+       mp_div(0, &_rr, x, r->p);
+       assert(MP_EQ(_r, _rr));
 #endif
       }
     }