mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: mark temps with new AutoTemp flag, and use it.
This is an extension of https://go-review.googlesource.com/c/31662/ to mark all the temporaries, not just the ssa-generated ones. Before-and-after ls -l `go tool -n compile` shows a 3% reduction in size (or rather, a prior 3% inflation for failing to filter temps out properly.) Replaced name-dependent "is it a temp?" tests with calls to *Node.IsAutoTmp(), which depends on AutoTemp. Also replace calls to istemp(n) with n.IsAutoTmp(), to reduce duplication and clean up function name space. Generated temporaries now come with a "." prefix to avoid (apparently harmless) clashes with legal Go variable names. Fixes #17644. Fixes #17240. Change-Id: If1417f29c79a7275d7303ddf859b51472890fd43 Reviewed-on: https://go-review.googlesource.com/32255 Run-TryBot: David Chase <drchase@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
eec1e5d9c6
commit
9c066bab64
14 changed files with 125 additions and 118 deletions
|
|
@ -72,6 +72,15 @@ type Node struct {
|
|||
flags uint8 // TODO: store more bool fields in this flag field
|
||||
}
|
||||
|
||||
// IsAutoTmp indicates if n was created by the compiler as a temporary,
|
||||
// based on the setting of the .AutoTemp flag in n's Name.
|
||||
func (n *Node) IsAutoTmp() bool {
|
||||
if n == nil || n.Op != ONAME {
|
||||
return false
|
||||
}
|
||||
return n.Name.AutoTemp
|
||||
}
|
||||
|
||||
const (
|
||||
hasBreak = 1 << iota
|
||||
isClosureVar
|
||||
|
|
@ -188,6 +197,7 @@ type Name struct {
|
|||
Byval bool // is the variable captured by value or by reference
|
||||
Needzero bool // if it contains pointers, needs to be zeroed on function entry
|
||||
Keepalive bool // mark value live across unknown assembly call
|
||||
AutoTemp bool // is the variable a temporary (implies no dwarf info. reset if escapes to heap)
|
||||
}
|
||||
|
||||
type Param struct {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue