aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2021-01-11 17:22:20 -0800
committerMatthew Dempsky <mdempsky@google.com>2021-01-12 04:46:22 +0000
commit95acd8121bf76a15ecba0259367dca0efe6d3a77 (patch)
tree8ff460877754208c25eface7bf66d0942513864a /src/cmd/compile/internal
parent12ee55ba7bf22157267e735e8e4bbf651c5b4e7d (diff)
downloadgo-95acd8121bf76a15ecba0259367dca0efe6d3a77.tar.gz
go-95acd8121bf76a15ecba0259367dca0efe6d3a77.zip
[dev.regabi] cmd/compile: remove Name.Typegen
Just directly set Type.Vargen when declaring defined types within a function. Change-Id: Idcc0007084a660ce1c39da4a3697e158a1c615b5 Reviewed-on: https://go-review.googlesource.com/c/go/+/283212 Trust: Matthew Dempsky <mdempsky@google.com> Trust: Dan Scales <danscales@google.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Dan Scales <danscales@google.com>
Diffstat (limited to 'src/cmd/compile/internal')
-rw-r--r--src/cmd/compile/internal/ir/name.go4
-rw-r--r--src/cmd/compile/internal/ir/sizeof_test.go2
-rw-r--r--src/cmd/compile/internal/typecheck/dcl.go8
-rw-r--r--src/cmd/compile/internal/typecheck/typecheck.go11
4 files changed, 11 insertions, 14 deletions
diff --git a/src/cmd/compile/internal/ir/name.go b/src/cmd/compile/internal/ir/name.go
index 30f7e9b9e0..514b303893 100644
--- a/src/cmd/compile/internal/ir/name.go
+++ b/src/cmd/compile/internal/ir/name.go
@@ -55,10 +55,6 @@ type Name struct {
// The function, method, or closure in which local variable or param is declared.
Curfn *Func
- // Unique number for OTYPE names within a function.
- // TODO(mdempsky): Remove completely.
- Typegen int32
-
Ntype Ntype
Heapaddr *Name // temp holding heap address of param
diff --git a/src/cmd/compile/internal/ir/sizeof_test.go b/src/cmd/compile/internal/ir/sizeof_test.go
index 1a4d2e5c7a..2ada7231aa 100644
--- a/src/cmd/compile/internal/ir/sizeof_test.go
+++ b/src/cmd/compile/internal/ir/sizeof_test.go
@@ -21,7 +21,7 @@ func TestSizeof(t *testing.T) {
_64bit uintptr // size on 64bit platforms
}{
{Func{}, 184, 320},
- {Name{}, 120, 216},
+ {Name{}, 116, 208},
}
for _, tt := range tests {
diff --git a/src/cmd/compile/internal/typecheck/dcl.go b/src/cmd/compile/internal/typecheck/dcl.go
index caa3e8203a..c7d7506fd1 100644
--- a/src/cmd/compile/internal/typecheck/dcl.go
+++ b/src/cmd/compile/internal/typecheck/dcl.go
@@ -62,10 +62,6 @@ func Declare(n *ir.Name, ctxt ir.Class) {
if ir.CurFunc != nil && ctxt != ir.PFUNC && n.Op() == ir.ONAME {
ir.CurFunc.Dcl = append(ir.CurFunc.Dcl, n)
}
- if n.Op() == ir.OTYPE {
- declare_typegen++
- n.Typegen = int32(declare_typegen)
- }
types.Pushdcl(s)
n.Curfn = ir.CurFunc
}
@@ -308,10 +304,6 @@ func checkembeddedtype(t *types.Type) {
}
}
-// declare individual names - var, typ, const
-
-var declare_typegen int
-
func fakeRecvField() *types.Field {
return types.NewField(src.NoXPos, nil, types.FakeRecvType())
}
diff --git a/src/cmd/compile/internal/typecheck/typecheck.go b/src/cmd/compile/internal/typecheck/typecheck.go
index 431fb04bef..3fc077b00c 100644
--- a/src/cmd/compile/internal/typecheck/typecheck.go
+++ b/src/cmd/compile/internal/typecheck/typecheck.go
@@ -1681,13 +1681,22 @@ func CheckMapKeys() {
mapqueue = nil
}
+// typegen tracks the number of function-scoped defined types that
+// have been declared. It's used to generate unique linker symbols for
+// their runtime type descriptors.
+var typegen int32
+
func typecheckdeftype(n *ir.Name) {
if base.EnableTrace && base.Flag.LowerT {
defer tracePrint("typecheckdeftype", n)(nil)
}
t := types.NewNamed(n)
- t.Vargen = n.Typegen
+ if n.Curfn != nil {
+ typegen++
+ t.Vargen = typegen
+ }
+
if n.Pragma()&ir.NotInHeap != 0 {
t.SetNotInHeap(true)
}