]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: delete ZeroAuto
authorCherry Zhang <cherryyz@google.com>
Fri, 25 Oct 2019 20:43:08 +0000 (16:43 -0400)
committerCherry Zhang <cherryyz@google.com>
Mon, 28 Oct 2019 17:28:12 +0000 (17:28 +0000)
ZeroAuto was used with the ambiguously live logic. The
ambiguously live logic is removed as we switched to stack
objects. It is now never called. Remove.

Change-Id: If4cdd7fed5297f8ab591cc392a76c80f57820856
Reviewed-on: https://go-review.googlesource.com/c/go/+/203538
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
18 files changed:
src/cmd/compile/internal/amd64/galign.go
src/cmd/compile/internal/amd64/ggen.go
src/cmd/compile/internal/arm/galign.go
src/cmd/compile/internal/arm/ggen.go
src/cmd/compile/internal/arm64/galign.go
src/cmd/compile/internal/arm64/ggen.go
src/cmd/compile/internal/gc/go.go
src/cmd/compile/internal/mips/galign.go
src/cmd/compile/internal/mips/ggen.go
src/cmd/compile/internal/mips64/galign.go
src/cmd/compile/internal/mips64/ggen.go
src/cmd/compile/internal/ppc64/galign.go
src/cmd/compile/internal/ppc64/ggen.go
src/cmd/compile/internal/s390x/galign.go
src/cmd/compile/internal/s390x/ggen.go
src/cmd/compile/internal/wasm/ssa.go
src/cmd/compile/internal/x86/galign.go
src/cmd/compile/internal/x86/ggen.go

index 4e7e762d7d1d1d1719a23d28207d189ac9b4a2ae..af58440502e00a2b5c3162f154e123cf18063c45 100644 (file)
@@ -17,7 +17,6 @@ func Init(arch *gc.Arch) {
        arch.MAXWIDTH = 1 << 50
 
        arch.ZeroRange = zerorange
-       arch.ZeroAuto = zeroAuto
        arch.Ginsnop = ginsnop
        arch.Ginsnopdefer = ginsnop
 
index f43800efe79c8a81ca5ebf5c33f220690dff6d5d..0c1456f4d0dedeb5c469daa0511cbad26e23fc53 100644 (file)
@@ -121,26 +121,6 @@ func zerorange(pp *gc.Progs, p *obj.Prog, off, cnt int64, state *uint32) *obj.Pr
        return p
 }
 
-func zeroAuto(pp *gc.Progs, n *gc.Node) {
-       // Note: this code must not clobber any registers.
-       op := x86.AMOVQ
-       if gc.Widthptr == 4 {
-               op = x86.AMOVL
-       }
-       sym := n.Sym.Linksym()
-       size := n.Type.Size()
-       for i := int64(0); i < size; i += int64(gc.Widthptr) {
-               p := pp.Prog(op)
-               p.From.Type = obj.TYPE_CONST
-               p.From.Offset = 0
-               p.To.Type = obj.TYPE_MEM
-               p.To.Name = obj.NAME_AUTO
-               p.To.Reg = x86.REG_SP
-               p.To.Offset = n.Xoffset + i
-               p.To.Sym = sym
-       }
-}
-
 func ginsnop(pp *gc.Progs) *obj.Prog {
        // This is a hardware nop (1-byte 0x90) instruction,
        // even though we describe it as an explicit XCHGL here.
index 8469dbdd73b1ccc79df6bf5d9cd3a007093b2507..20e2f43a91c0d7f162f3e5b6ea70f6d12f24e71a 100644 (file)
@@ -17,7 +17,6 @@ func Init(arch *gc.Arch) {
        arch.MAXWIDTH = (1 << 32) - 1
        arch.SoftFloat = objabi.GOARM == 5
        arch.ZeroRange = zerorange
-       arch.ZeroAuto = zeroAuto
        arch.Ginsnop = ginsnop
        arch.Ginsnopdefer = ginsnop
 
index e9a92af10875290179412a2eea5cda5018d8aeee..bd8d7ff40b8f83f986143e874e6f2b6a0eec2a1b 100644 (file)
@@ -47,27 +47,6 @@ func zerorange(pp *gc.Progs, p *obj.Prog, off, cnt int64, r0 *uint32) *obj.Prog
        return p
 }
 
-func zeroAuto(pp *gc.Progs, n *gc.Node) {
-       // Note: this code must not clobber any registers.
-       sym := n.Sym.Linksym()
-       size := n.Type.Size()
-       p := pp.Prog(arm.AMOVW)
-       p.From.Type = obj.TYPE_CONST
-       p.From.Offset = 0
-       p.To.Type = obj.TYPE_REG
-       p.To.Reg = arm.REGTMP
-       for i := int64(0); i < size; i += 4 {
-               p := pp.Prog(arm.AMOVW)
-               p.From.Type = obj.TYPE_REG
-               p.From.Reg = arm.REGTMP
-               p.To.Type = obj.TYPE_MEM
-               p.To.Name = obj.NAME_AUTO
-               p.To.Reg = arm.REGSP
-               p.To.Offset = n.Xoffset + i
-               p.To.Sym = sym
-       }
-}
-
 func ginsnop(pp *gc.Progs) *obj.Prog {
        p := pp.Prog(arm.AAND)
        p.From.Type = obj.TYPE_REG
index f01fe8a5718d4969436e8b0f4380cc6c84f3b9f5..40d6e17ae2296cb4961cc58b589dcb4b43961c48 100644 (file)
@@ -17,7 +17,6 @@ func Init(arch *gc.Arch) {
 
        arch.PadFrame = padframe
        arch.ZeroRange = zerorange
-       arch.ZeroAuto = zeroAuto
        arch.Ginsnop = ginsnop
        arch.Ginsnopdefer = ginsnop
 
index 2f925656bc15d088883218fefcacf6c70b1220ff..dbe7495ccac9bf2adf589ae0526f38417e64a558 100644 (file)
@@ -63,22 +63,6 @@ func zerorange(pp *gc.Progs, p *obj.Prog, off, cnt int64, _ *uint32) *obj.Prog {
        return p
 }
 
-func zeroAuto(pp *gc.Progs, n *gc.Node) {
-       // Note: this code must not clobber any registers.
-       sym := n.Sym.Linksym()
-       size := n.Type.Size()
-       for i := int64(0); i < size; i += 8 {
-               p := pp.Prog(arm64.AMOVD)
-               p.From.Type = obj.TYPE_REG
-               p.From.Reg = arm64.REGZERO
-               p.To.Type = obj.TYPE_MEM
-               p.To.Name = obj.NAME_AUTO
-               p.To.Reg = arm64.REGSP
-               p.To.Offset = n.Xoffset + i
-               p.To.Sym = sym
-       }
-}
-
 func ginsnop(pp *gc.Progs) *obj.Prog {
        p := pp.Prog(arm64.AHINT)
        p.From.Type = obj.TYPE_CONST
index d05f754f30b5b6d84d000703d9dbc2838cefa6ef..c14fb4d3fab722ad7acdf2a1d01795d6f23676a5 100644 (file)
@@ -270,11 +270,6 @@ type Arch struct {
        // SSAGenBlock emits end-of-block Progs. SSAGenValue should be called
        // for all values in the block before SSAGenBlock.
        SSAGenBlock func(s *SSAGenState, b, next *ssa.Block)
-
-       // ZeroAuto emits code to zero the given auto stack variable.
-       // ZeroAuto must not use any non-temporary registers.
-       // ZeroAuto will only be called for variables which contain a pointer.
-       ZeroAuto func(*Progs, *Node)
 }
 
 var thearch Arch
index 596dbd7fa0cddbd4248637dbacc1627e7d0b6395..be40c16dde0b7baeca74f251714c6ef9636c9adf 100644 (file)
@@ -20,7 +20,6 @@ func Init(arch *gc.Arch) {
        arch.MAXWIDTH = (1 << 31) - 1
        arch.SoftFloat = (objabi.GOMIPS == "softfloat")
        arch.ZeroRange = zerorange
-       arch.ZeroAuto = zeroAuto
        arch.Ginsnop = ginsnop
        arch.Ginsnopdefer = ginsnop
        arch.SSAMarkMoves = func(s *gc.SSAGenState, b *ssa.Block) {}
index eab60756ba77daaef9885e8f042f9a018468fb4e..5e867721c3fcf6b08cd5140ceb43eb8013f6f700 100644 (file)
@@ -43,22 +43,6 @@ func zerorange(pp *gc.Progs, p *obj.Prog, off, cnt int64, _ *uint32) *obj.Prog {
        return p
 }
 
-func zeroAuto(pp *gc.Progs, n *gc.Node) {
-       // Note: this code must not clobber any registers.
-       sym := n.Sym.Linksym()
-       size := n.Type.Size()
-       for i := int64(0); i < size; i += 4 {
-               p := pp.Prog(mips.AMOVW)
-               p.From.Type = obj.TYPE_REG
-               p.From.Reg = mips.REGZERO
-               p.To.Type = obj.TYPE_MEM
-               p.To.Name = obj.NAME_AUTO
-               p.To.Reg = mips.REGSP
-               p.To.Offset = n.Xoffset + i
-               p.To.Sym = sym
-       }
-}
-
 func ginsnop(pp *gc.Progs) *obj.Prog {
        p := pp.Prog(mips.ANOR)
        p.From.Type = obj.TYPE_REG
index 07e9f98be5b6d48b95ce56c900115872ed5b14f5..90c381a50b6df3445d7a795fbfab472879b64722 100644 (file)
@@ -20,7 +20,6 @@ func Init(arch *gc.Arch) {
        arch.MAXWIDTH = 1 << 50
        arch.SoftFloat = objabi.GOMIPS64 == "softfloat"
        arch.ZeroRange = zerorange
-       arch.ZeroAuto = zeroAuto
        arch.Ginsnop = ginsnop
        arch.Ginsnopdefer = ginsnop
 
index 80c1f0296c0bf09a1064772b06c3c4136cfe9781..04e7a66e417b95c8a5bcd957fb11566f71e9ba45 100644 (file)
@@ -47,22 +47,6 @@ func zerorange(pp *gc.Progs, p *obj.Prog, off, cnt int64, _ *uint32) *obj.Prog {
        return p
 }
 
-func zeroAuto(pp *gc.Progs, n *gc.Node) {
-       // Note: this code must not clobber any registers.
-       sym := n.Sym.Linksym()
-       size := n.Type.Size()
-       for i := int64(0); i < size; i += 8 {
-               p := pp.Prog(mips.AMOVV)
-               p.From.Type = obj.TYPE_REG
-               p.From.Reg = mips.REGZERO
-               p.To.Type = obj.TYPE_MEM
-               p.To.Name = obj.NAME_AUTO
-               p.To.Reg = mips.REGSP
-               p.To.Offset = n.Xoffset + i
-               p.To.Sym = sym
-       }
-}
-
 func ginsnop(pp *gc.Progs) *obj.Prog {
        p := pp.Prog(mips.ANOR)
        p.From.Type = obj.TYPE_REG
index c6866e65e79fb2b3a1c13d8cca8c7bdc5537ea92..c8ef567dc3fd0ca94e8c70442913273fba34b2ac 100644 (file)
@@ -19,7 +19,6 @@ func Init(arch *gc.Arch) {
        arch.MAXWIDTH = 1 << 60
 
        arch.ZeroRange = zerorange
-       arch.ZeroAuto = zeroAuto
        arch.Ginsnop = ginsnop
        arch.Ginsnopdefer = ginsnopdefer
 
index a63a0f0f7756858eea636757746bcf6d0ff4c9eb..a5a772b49179e4b5b934a4842cb88d2d1243af6e 100644 (file)
@@ -42,22 +42,6 @@ func zerorange(pp *gc.Progs, p *obj.Prog, off, cnt int64, _ *uint32) *obj.Prog {
        return p
 }
 
-func zeroAuto(pp *gc.Progs, n *gc.Node) {
-       // Note: this code must not clobber any registers.
-       sym := n.Sym.Linksym()
-       size := n.Type.Size()
-       for i := int64(0); i < size; i += 8 {
-               p := pp.Prog(ppc64.AMOVD)
-               p.From.Type = obj.TYPE_REG
-               p.From.Reg = ppc64.REGZERO
-               p.To.Type = obj.TYPE_MEM
-               p.To.Name = obj.NAME_AUTO
-               p.To.Reg = ppc64.REGSP
-               p.To.Offset = n.Xoffset + i
-               p.To.Sym = sym
-       }
-}
-
 func ginsnop(pp *gc.Progs) *obj.Prog {
        p := pp.Prog(ppc64.AOR)
        p.From.Type = obj.TYPE_REG
index 26359abe66b11768c1cb2983ad0bad73f2329947..cb68fd36c14bf682d4861f080f03d10c15440fe1 100644 (file)
@@ -15,7 +15,6 @@ func Init(arch *gc.Arch) {
        arch.MAXWIDTH = 1 << 50
 
        arch.ZeroRange = zerorange
-       arch.ZeroAuto = zeroAuto
        arch.Ginsnop = ginsnop
        arch.Ginsnopdefer = ginsnop
 
index 16af190b2f42373db68ab51d9311e00f76eb5306..5a837d85742367acba04fe01381b3e9671632b71 100644 (file)
@@ -83,23 +83,6 @@ func zerorange(pp *gc.Progs, p *obj.Prog, off, cnt int64, _ *uint32) *obj.Prog {
        return p
 }
 
-func zeroAuto(pp *gc.Progs, n *gc.Node) {
-       // Note: this code must not clobber any registers or the
-       // condition code.
-       sym := n.Sym.Linksym()
-       size := n.Type.Size()
-       for i := int64(0); i < size; i += int64(gc.Widthptr) {
-               p := pp.Prog(s390x.AMOVD)
-               p.From.Type = obj.TYPE_CONST
-               p.From.Offset = 0
-               p.To.Type = obj.TYPE_MEM
-               p.To.Name = obj.NAME_AUTO
-               p.To.Reg = s390x.REGSP
-               p.To.Offset = n.Xoffset + i
-               p.To.Sym = sym
-       }
-}
-
 func ginsnop(pp *gc.Progs) *obj.Prog {
        return pp.Prog(s390x.ANOPH)
 }
index 75b306e16840adb36785e3e7937b803a02e8c591..e07589234894ad69fa8218578ed0726a19246c0c 100644 (file)
@@ -19,7 +19,6 @@ func Init(arch *gc.Arch) {
        arch.MAXWIDTH = 1 << 50
 
        arch.ZeroRange = zeroRange
-       arch.ZeroAuto = zeroAuto
        arch.Ginsnop = ginsnop
        arch.Ginsnopdefer = ginsnop
 
@@ -45,21 +44,6 @@ func zeroRange(pp *gc.Progs, p *obj.Prog, off, cnt int64, state *uint32) *obj.Pr
        return p
 }
 
-func zeroAuto(pp *gc.Progs, n *gc.Node) {
-       sym := n.Sym.Linksym()
-       size := n.Type.Size()
-       for i := int64(0); i < size; i += 8 {
-               p := pp.Prog(wasm.AGet)
-               p.From = obj.Addr{Type: obj.TYPE_REG, Reg: wasm.REG_SP}
-
-               p = pp.Prog(wasm.AI64Const)
-               p.From = obj.Addr{Type: obj.TYPE_CONST, Offset: 0}
-
-               p = pp.Prog(wasm.AI64Store)
-               p.To = obj.Addr{Type: obj.TYPE_MEM, Name: obj.NAME_AUTO, Offset: n.Xoffset + i, Sym: sym}
-       }
-}
-
 func ginsnop(pp *gc.Progs) *obj.Prog {
        return pp.Prog(wasm.ANop)
 }
index 7f53ee3731cab97b54f04472375a5f81ff99679d..56c6989d937f446203b0721dc37d81a62e52e66a 100644 (file)
@@ -30,7 +30,6 @@ func Init(arch *gc.Arch) {
        arch.MAXWIDTH = (1 << 32) - 1
 
        arch.ZeroRange = zerorange
-       arch.ZeroAuto = zeroAuto
        arch.Ginsnop = ginsnop
        arch.Ginsnopdefer = ginsnop
 
index f247180a2ea449136f5ad45c7b20cf3f4f090620..a33ddc81e3dc00b5809405720db80409c1f7966b 100644 (file)
@@ -37,22 +37,6 @@ func zerorange(pp *gc.Progs, p *obj.Prog, off, cnt int64, ax *uint32) *obj.Prog
        return p
 }
 
-func zeroAuto(pp *gc.Progs, n *gc.Node) {
-       // Note: this code must not clobber any registers.
-       sym := n.Sym.Linksym()
-       size := n.Type.Size()
-       for i := int64(0); i < size; i += 4 {
-               p := pp.Prog(x86.AMOVL)
-               p.From.Type = obj.TYPE_CONST
-               p.From.Offset = 0
-               p.To.Type = obj.TYPE_MEM
-               p.To.Name = obj.NAME_AUTO
-               p.To.Reg = x86.REG_SP
-               p.To.Offset = n.Xoffset + i
-               p.To.Sym = sym
-       }
-}
-
 func ginsnop(pp *gc.Progs) *obj.Prog {
        // See comment in ../amd64/ggen.go.
        p := pp.Prog(x86.AXCHGL)