diff options
author | Cherry Zhang <cherryyz@google.com> | 2016-07-20 10:09:40 -0400 |
---|---|---|
committer | Cherry Zhang <cherryyz@google.com> | 2016-09-16 15:38:28 +0000 |
commit | 46ba59025f527b2cfc5ef0d5ec47be45971ba672 (patch) | |
tree | cbd4aa11996ac95d30797fc474d2e474ad316700 /src/cmd/compile/internal/ssa/sparsemap.go | |
parent | 882dd1c3baff19cfe8d59bc1f69d766b38540fa5 (diff) | |
download | go-46ba59025f527b2cfc5ef0d5ec47be45971ba672.tar.gz go-46ba59025f527b2cfc5ef0d5ec47be45971ba672.zip |
cmd/compile: label LoadReg with line number of the use
A tentative fix of #16380. It adds "line" everywhere...
This also reduces binary size slightly (cmd/go on ARM as an example):
before after
total binary size 8068097 8018945 (-0.6%)
.gopclntab 1195341 1179929 (-1.3%)
.debug_line 689692 652017 (-5.5%)
Change-Id: Ibda657c6999783c5bac180cbbba487006dbf0ed7
Reviewed-on: https://go-review.googlesource.com/25082
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/ssa/sparsemap.go')
-rw-r--r-- | src/cmd/compile/internal/ssa/sparsemap.go | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/cmd/compile/internal/ssa/sparsemap.go b/src/cmd/compile/internal/ssa/sparsemap.go index afb9f60491..70c4f6190c 100644 --- a/src/cmd/compile/internal/ssa/sparsemap.go +++ b/src/cmd/compile/internal/ssa/sparsemap.go @@ -10,6 +10,7 @@ package ssa type sparseEntry struct { key ID val int32 + aux int32 } type sparseMap struct { @@ -42,13 +43,14 @@ func (s *sparseMap) get(k ID) int32 { return -1 } -func (s *sparseMap) set(k ID, v int32) { +func (s *sparseMap) set(k ID, v, a int32) { i := s.sparse[k] if i < int32(len(s.dense)) && s.dense[i].key == k { s.dense[i].val = v + s.dense[i].aux = a return } - s.dense = append(s.dense, sparseEntry{k, v}) + s.dense = append(s.dense, sparseEntry{k, v, a}) s.sparse[k] = int32(len(s.dense)) - 1 } @@ -62,7 +64,7 @@ func (s *sparseMap) setBit(k ID, v uint) { s.dense[i].val |= 1 << v return } - s.dense = append(s.dense, sparseEntry{k, 1 << v}) + s.dense = append(s.dense, sparseEntry{k, 1 << v, 0}) s.sparse[k] = int32(len(s.dense)) - 1 } |