]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/gc: registerize more in 7g and 9g
authorJosh Bleecher Snyder <josharian@gmail.com>
Fri, 10 Apr 2015 00:58:52 +0000 (17:58 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Thu, 16 Apr 2015 15:50:37 +0000 (15:50 +0000)
7g and 9g disagree with componentgen
about what type len and cap have.

This results in an etype mismatch,
which inhibits registerization.

Fixing this results in 7406 more registerizations
while building the stdlib.
There are still 1512 missed opportunities.

This should improve the performance benefit
to 7g of enabling componentgen (CL 8636).

This CL reduces the size of godoc by 203k (-1.177%).

This was discovered by using the diagnostics
added in CL 8732 and running:

GOARCH=arm64 GOOS=linux go build -gcflags="-d registerization" std

See CL 91850043 for similar earlier fixes for 6g and 8g.

Change-Id: I57f478228a000ad7529d4136bad94a51343c4daa
Reviewed-on: https://go-review.googlesource.com/8733
Reviewed-by: Dave Cheney <dave@cheney.net>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/internal/gc/gsubr.go

index 4483d4e4f5e38932601124a5930a5b414d9f3418..99ef74e42837a074f7ab7c868f07c291a3533fa6 100644 (file)
@@ -466,9 +466,6 @@ func Naddr(a *obj.Addr, n *Node) {
                        break // len(nil)
                }
                a.Etype = Simtype[TUINT]
-               if Thearch.Thechar == '7' || Thearch.Thechar == '9' {
-                       a.Etype = Simtype[TINT]
-               }
                a.Offset += int64(Array_nel)
                if Thearch.Thechar != '5' { // TODO(rsc): Do this even on arm.
                        a.Width = int64(Widthint)
@@ -482,9 +479,6 @@ func Naddr(a *obj.Addr, n *Node) {
                        break // cap(nil)
                }
                a.Etype = Simtype[TUINT]
-               if Thearch.Thechar == '7' || Thearch.Thechar == '9' {
-                       a.Etype = Simtype[TINT]
-               }
                a.Offset += int64(Array_cap)
                if Thearch.Thechar != '5' { // TODO(rsc): Do this even on arm.
                        a.Width = int64(Widthint)