]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.regabi] cmd/compile: remove Name.Typegen
authorMatthew Dempsky <mdempsky@google.com>
Tue, 12 Jan 2021 01:22:20 +0000 (17:22 -0800)
committerMatthew Dempsky <mdempsky@google.com>
Tue, 12 Jan 2021 04:46:22 +0000 (04:46 +0000)
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>
src/cmd/compile/internal/ir/name.go
src/cmd/compile/internal/ir/sizeof_test.go
src/cmd/compile/internal/typecheck/dcl.go
src/cmd/compile/internal/typecheck/typecheck.go

index 30f7e9b9e0e6a6432fce2c22fc64af628f4b50e3..514b303893f5f89387a27a09322f6ed3cc00c5a7 100644 (file)
@@ -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
 
index 1a4d2e5c7a6d0dd5e541b9571b54c290bd0cd5fa..2ada7231aae3c09b6970d56dc7a1548eaf8a9dc9 100644 (file)
@@ -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 {
index caa3e8203a332564c3b142e28ce46f05eae8eab5..c7d7506fd1da0a50f7953150fa0bfd50c83d163c 100644 (file)
@@ -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())
 }
index 431fb04bef4ebb88c22945259b80109d50bb5b80..3fc077b00cb180a9292ddba4a8127da101696999 100644 (file)
@@ -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)
        }