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;
}