]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: simplify reexport logic
authorMatthew Dempsky <mdempsky@google.com>
Sat, 31 Mar 2018 01:58:03 +0000 (18:58 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Mon, 2 Apr 2018 22:41:56 +0000 (22:41 +0000)
commitbcc8edfd8a6b95865911e7a03a21b40bad0acc1d
tree6d12ac34f19fe86d31b68bc412bed2ed56dffb14
parentfd22542eaa02f73bdd1e74b5116165813fc3458b
cmd/compile: simplify reexport logic

Currently, we reexport any package-scope constant, function, type, or
variable declarations needed by an inlineable function body. However,
now that we have an early pass to walk inlineable function bodies
(golang.org/cl/74110), we can simplify the logic for finding these
declarations.

The binary export format supports writing out type declarations
in-place at their first use. Also, it always writes out constants by
value, so their declarations never need to be reexported.

Notably, we attempted this before (golang.org/cl/36170) and had to
revert it (golang.org/cl/45911). However, this was because while
writing out inline bodies, we could discover variable/function
dependencies. By collecting variable/function dependencies during
inlineable function discovery, we avoid this problem.

While here, get rid of isInlineable. We already typecheck inlineable
function bodies during inlFlood, so it's become a no-op. Just move the
comment explaining parameter numbering to its caller.

Change-Id: Ibbfaafce793733675d3a2ad98791758583055666
Reviewed-on: https://go-review.googlesource.com/103864
Reviewed-by: Robert Griesemer <gri@golang.org>
src/cmd/compile/internal/gc/bexport.go
src/cmd/compile/internal/gc/export.go
src/cmd/compile/internal/gc/inl.go