shithub: mc

Download patch

ref: 66de4498b2b94e9fde735c7c3c1c19e2f5a362ce
parent: d532e561e36b997684354cd7bce46dad074a00ca
author: Ori Bernstein <[email protected]>
date: Wed Jun 13 08:06:38 EDT 2012

Quick fix for fibonacci function.

    We spilled while generating arguments. THIS IS BAD.

--- a/8/isel.c
+++ b/8/isel.c
@@ -354,11 +354,13 @@
         locmem(&dst, argoff, Resp, Rnone, arg.mode);
         stor(s, &arg, &dst);
         argsz += size(n->expr.args[i]);
+        freeloc(s, arg);
+        freeloc(s, dst);
     }
     selexpr(s, n->expr.args[0]);
     fn = getloc(s, n->expr.args[0]);
-    claimreg(s, Reax);
     g(s, Icall, &fn, NULL);
+    claimreg(s, Reax);
     if (argsz)
         g(s, Iadd, &stkbump, &esp, NULL);
     return eax;