shithub: mc

Download patch

ref: e4739ae1457f3dccadbc53afbd160bc6f188cd4d
parent: bce1f474989cde90cf2e874776d618e11a87f97d
author: Ori Bernstein <[email protected]>
date: Fri Jun 22 17:46:03 EDT 2012

Don't make duplicate specializations

--- a/parse/specialize.c
+++ b/parse/specialize.c
@@ -201,10 +201,15 @@
     assert(n->decl.isgeneric);
 
     *name = genericname(n, to);
+    d = getdcl(file->file.globls, *name);
+    if (d)
+        return d;
     tsmap = mkht(tidhash, tideq);
     fillsubst(tsmap, to, n->decl.type);
     d = specializenode(n, tsmap);
     d->decl.name = *name;
     dump(d, stdout);
+    putdcl(file->file.globls, d);
+    lappend(&n->file.stmts, &n->file.nstmts, d);
     return d;
 }