]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: reuse temporaries in order pass
authorKeith Randall <khr@golang.org>
Fri, 5 Oct 2018 15:54:50 +0000 (08:54 -0700)
committerKeith Randall <khr@golang.org>
Sun, 14 Oct 2018 05:21:00 +0000 (05:21 +0000)
commit389e942745ddd7eef44b71571c463b0dfc3dcac2
tree85787f61381c1f4a546c79f7732f02e106c857a6
parent0e9f8a21f8b6534931f1ab50909161a289a0da3c
cmd/compile: reuse temporaries in order pass

Instead of allocating a new temporary each time one
is needed, keep a list of temporaries which are free
(have already been VARKILLed on every path) and use
one of them.

Should save a lot of stack space. In a function like this:

func main() {
     fmt.Printf("%d %d\n", 2, 3)
     fmt.Printf("%d %d\n", 4, 5)
     fmt.Printf("%d %d\n", 6, 7)
}

The three [2]interface{} arrays used to hold the ... args
all use the same autotmp, instead of 3 different autotmps
as happened previous to this CL.

Change-Id: I2d728e226f81e05ae68ca8247af62014a1b032d3
Reviewed-on: https://go-review.googlesource.com/c/140301
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
src/cmd/compile/internal/gc/order.go
src/cmd/compile/internal/gc/sinit.go
test/live.go
test/uintptrescapes2.go