From 8a9be4921a3cc91c80c02bb5b4cf2ad129c0c7cc Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Sat, 28 Sep 2019 22:42:35 -0400 Subject: [dev.link] cmd/link: use index for deadcode Switch the deadcode pass to use indices instead of Symbol structures when using new object file format. Delay loading symbol relocations and contents fully after the deadcode pass. The next step is not to create Symbol structures until deadcode is done. Method tracking logic hasn't been implemented. Currently, all methods of a reachable type are live. Change-Id: Iffcd06ff84e6e52bd9eb24d1220d94234d18ab6b Reviewed-on: https://go-review.googlesource.com/c/go/+/198199 Run-TryBot: Cherry Zhang TryBot-Result: Gobot Gobot Reviewed-by: Than McIntosh --- src/cmd/link/internal/ld/deadcode.go | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/cmd/link/internal/ld/deadcode.go') diff --git a/src/cmd/link/internal/ld/deadcode.go b/src/cmd/link/internal/ld/deadcode.go index a024e40dff..d0896fcf2c 100644 --- a/src/cmd/link/internal/ld/deadcode.go +++ b/src/cmd/link/internal/ld/deadcode.go @@ -50,6 +50,11 @@ func deadcode(ctxt *Link) { ctxt.Logf("%5.2f deadcode\n", Cputime()) } + if *flagNewobj { + deadcode2(ctxt) + return + } + d := &deadcodepass{ ctxt: ctxt, ifaceMethod: make(map[methodsig]bool), @@ -118,6 +123,10 @@ func deadcode(ctxt *Link) { } } + addToTextp(ctxt) +} + +func addToTextp(ctxt *Link) { // Remove dead text but keep file information (z symbols). textp := []*sym.Symbol{} for _, s := range ctxt.Textp { -- cgit v1.3