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