delete unused code and data from 6.outs.
cuts simple test binary by 7%.
would be more except for reflection.
R=r
DELTA=126 (117 added, 4 deleted, 5 changed)
OCL=23163
CL=23237
diff --git a/src/cmd/6l/obj.c b/src/cmd/6l/obj.c
index d6af049..076809a 100644
--- a/src/cmd/6l/obj.c
+++ b/src/cmd/6l/obj.c
@@ -369,9 +369,9 @@
objfile(a);
}
ignoreoptfuncs();
- // TODO(rsc): remove unused code and data
definetypestrings();
definetypesigs();
+ deadcode();
firstp = firstp->link;
if(firstp == P)
@@ -1068,11 +1068,16 @@
// If we've seen an AGLOBL that said this sym was DUPOK,
// ignore any more ADATA we see, which must be
// redefinitions.
- if(p->from.sym != S && p->from.sym->dupok) {
+ s = p->from.sym;
+ if(s != S && s->dupok) {
if(debug['v'])
- Bprint(&bso, "skipping %s in %s: dupok", p->from.sym->name, pn);
+ Bprint(&bso, "skipping %s in %s: dupok", s->name, pn);
goto loop;
}
+ if(s != S) {
+ p->dlink = s->data;
+ s->data = p;
+ }
if(edatap == P)
datap = p;
else