From 6ae47d1354d1157bbc9868fc296bfc43ea5b9083 Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Tue, 3 Mar 2020 22:50:34 -0500 Subject: [PATCH] [dev.link] cmd/link: don't always load type symbols The type symbols were always loaded in LoadFull, as the old sym.Symbol-based DWARF generation needs them to present. Now we have converted the DWARF type generation pass, which uses the loader symbols directly. No need to load the type symbols if they are not live. This reduces loaded symbols by ~18% for cmd/compile. Change-Id: Ic1f6fcdff845f3c62784d05ad716b1742f249481 Reviewed-on: https://go-review.googlesource.com/c/go/+/222018 Run-TryBot: Cherry Zhang Reviewed-by: Than McIntosh Reviewed-by: Jeremy Faller TryBot-Result: Gobot Gobot --- src/cmd/link/internal/loader/loader.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/cmd/link/internal/loader/loader.go b/src/cmd/link/internal/loader/loader.go index 56d13db805..058ef78f76 100644 --- a/src/cmd/link/internal/loader/loader.go +++ b/src/cmd/link/internal/loader/loader.go @@ -1945,9 +1945,8 @@ func loadObjSyms(l *Loader, syms *sym.Symbols, r *oReader) int { if t == 0 { log.Fatalf("missing type for %s in %s", name, r.unit.Lib) } - if !l.attrReachable.Has(gi) && !(t == sym.SRODATA && strings.HasPrefix(name, "type.")) && name != "runtime.addmoduledata" && name != "runtime.lastmoduledatap" { + if !l.attrReachable.Has(gi) && name != "runtime.addmoduledata" && name != "runtime.lastmoduledatap" { // No need to load unreachable symbols. - // XXX some type symbol's content may be needed in DWARF code, but they are not marked. // XXX reference to runtime.addmoduledata may be generated later by the linker in plugin mode. continue } -- 2.48.1