Skip to content

Commit dd748cf

Browse files
committed
cmd/compile: make Afunclit the default/only behavior for Naddr
Naddr used to translate PFUNC Nodes into references to the function literal wrapper, and then Afunclit could be used to rewrite it to reference the function text itself. But now everywhere we use Naddr on PFUNC Nodes, we immediately call Afunclit anyway. So just merge Afunclit's behavior into Naddr. Passes toolstash/buildall. Change-Id: If2ca6d7f314c1a0711df9b8209aace16ba4b8bc0 Reviewed-on: https://go-review.googlesource.com/30073 Run-TryBot: Matthew Dempsky <[email protected]> Reviewed-by: Brad Fitzpatrick <[email protected]> TryBot-Result: Gobot Gobot <[email protected]>
1 parent d2df849 commit dd748cf

File tree

6 files changed

+5
-26
lines changed

6 files changed

+5
-26
lines changed

src/cmd/compile/internal/arm/ggen.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,7 @@ func zerorange(p *obj.Prog, frame int64, lo int64, hi int64, r0 *uint32) *obj.Pr
7474
p = gc.Appendpp(p, arm.AADD, obj.TYPE_CONST, 0, 4+frame+lo, obj.TYPE_REG, arm.REG_R1, 0)
7575
p.Reg = arm.REGSP
7676
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_MEM, 0, 0)
77-
f := gc.Sysfunc("duffzero")
78-
gc.Naddr(&p.To, f)
79-
gc.Afunclit(&p.To, f)
77+
gc.Naddr(&p.To, gc.Sysfunc("duffzero"))
8078
p.To.Offset = 4 * (128 - cnt/int64(gc.Widthptr))
8179
} else {
8280
p = gc.Appendpp(p, arm.AADD, obj.TYPE_CONST, 0, 4+frame+lo, obj.TYPE_REG, arm.REG_R1, 0)

src/cmd/compile/internal/arm64/ggen.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,7 @@ func zerorange(p *obj.Prog, frame int64, lo int64, hi int64) *obj.Prog {
8181
p = gc.Appendpp(p, arm64.AADD, obj.TYPE_CONST, 0, 8+frame+lo-8, obj.TYPE_REG, arm64.REGRT1, 0)
8282
p.Reg = arm64.REGRT1
8383
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_MEM, 0, 0)
84-
f := gc.Sysfunc("duffzero")
85-
gc.Naddr(&p.To, f)
86-
gc.Afunclit(&p.To, f)
84+
gc.Naddr(&p.To, gc.Sysfunc("duffzero"))
8785
p.To.Offset = 4 * (128 - cnt/int64(gc.Widthptr))
8886
} else {
8987
p = gc.Appendpp(p, arm64.AMOVD, obj.TYPE_CONST, 0, 8+frame+lo-8, obj.TYPE_REG, arm64.REGTMP, 0)

src/cmd/compile/internal/gc/gsubr.go

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,6 @@ func Prog(as obj.As) *obj.Prog {
5252
return p
5353
}
5454

55-
func Afunclit(a *obj.Addr, n *Node) {
56-
if a.Type == obj.TYPE_ADDR && a.Name == obj.NAME_EXTERN {
57-
a.Type = obj.TYPE_MEM
58-
a.Sym = Linksym(n.Sym)
59-
}
60-
}
61-
6255
func Clearp(p *obj.Prog) {
6356
obj.Nopout(p)
6457
p.As = obj.AEND
@@ -210,19 +203,14 @@ func Naddr(a *obj.Addr, n *Node) {
210203
default:
211204
Fatalf("naddr: ONAME class %v %d\n", n.Sym, n.Class)
212205

213-
case PEXTERN:
206+
case PEXTERN, PFUNC:
214207
a.Name = obj.NAME_EXTERN
215208

216209
case PAUTO:
217210
a.Name = obj.NAME_AUTO
218211

219212
case PPARAM, PPARAMOUT:
220213
a.Name = obj.NAME_PARAM
221-
222-
case PFUNC:
223-
a.Name = obj.NAME_EXTERN
224-
a.Type = obj.TYPE_ADDR
225-
s = funcsym(s)
226214
}
227215

228216
a.Sym = Linksym(s)

src/cmd/compile/internal/gc/pgen.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,6 @@ func compile(fn *Node) {
383383
nam = nil
384384
}
385385
ptxt := Gins(obj.ATEXT, nam, &nod1)
386-
Afunclit(&ptxt.From, Curfn.Func.Nname)
387386
ptxt.From3 = new(obj.Addr)
388387
if fn.Func.Dupok {
389388
ptxt.From3.Offset |= obj.DUPOK

src/cmd/compile/internal/mips64/ggen.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,7 @@ func zerorange(p *obj.Prog, frame int64, lo int64, hi int64) *obj.Prog {
7474
p = gc.Appendpp(p, mips.AADDV, obj.TYPE_CONST, 0, 8+frame+lo-8, obj.TYPE_REG, mips.REGRT1, 0)
7575
p.Reg = mips.REGSP
7676
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_MEM, 0, 0)
77-
f := gc.Sysfunc("duffzero")
78-
gc.Naddr(&p.To, f)
79-
gc.Afunclit(&p.To, f)
77+
gc.Naddr(&p.To, gc.Sysfunc("duffzero"))
8078
p.To.Offset = 8 * (128 - cnt/int64(gc.Widthptr))
8179
} else {
8280
// ADDV $(8+frame+lo-8), SP, r1

src/cmd/compile/internal/ppc64/ggen.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,7 @@ func zerorange(p *obj.Prog, frame int64, lo int64, hi int64) *obj.Prog {
7171
p = gc.Appendpp(p, ppc64.AADD, obj.TYPE_CONST, 0, gc.Ctxt.FixedFrameSize()+frame+lo-8, obj.TYPE_REG, ppc64.REGRT1, 0)
7272
p.Reg = ppc64.REGSP
7373
p = gc.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_MEM, 0, 0)
74-
f := gc.Sysfunc("duffzero")
75-
gc.Naddr(&p.To, f)
76-
gc.Afunclit(&p.To, f)
74+
gc.Naddr(&p.To, gc.Sysfunc("duffzero"))
7775
p.To.Offset = 4 * (128 - cnt/int64(gc.Widthptr))
7876
} else {
7977
p = gc.Appendpp(p, ppc64.AMOVD, obj.TYPE_CONST, 0, gc.Ctxt.FixedFrameSize()+frame+lo-8, obj.TYPE_REG, ppc64.REGTMP, 0)

0 commit comments

Comments
 (0)