aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ssa/sparsemap.go
diff options
context:
space:
mode:
authorCherry Zhang <cherryyz@google.com>2016-07-20 10:09:40 -0400
committerCherry Zhang <cherryyz@google.com>2016-09-16 15:38:28 +0000
commit46ba59025f527b2cfc5ef0d5ec47be45971ba672 (patch)
treecbd4aa11996ac95d30797fc474d2e474ad316700 /src/cmd/compile/internal/ssa/sparsemap.go
parent882dd1c3baff19cfe8d59bc1f69d766b38540fa5 (diff)
downloadgo-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.go8
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
}