Commit 67e7ded0 authored by Russ Cox's avatar Russ Cox

[dev.cc] cmd/internal/obj, cmd/new9a: use ctxt.NewProg

cmd/internal/obj reconverted using rsc.io/c2go rev 40275b8.

All Prog*s need Ctxt field set so that the printer can tell
which architecture the Prog belongs to.
Use ctxt.NewProg consistently for this.

Change-Id: Ic981b3d68f24931ffae74a772e83a3dc2fdf518a
Reviewed-on: https://go-review.googlesource.com/3152Reviewed-by: default avatarRob Pike <r@golang.org>
parent ebaf8db4
......@@ -463,7 +463,7 @@ func asmoutnacl(ctxt *obj.Link, origPC int32, p *obj.Prog, o *Optab, out []uint3
// split it into two instructions:
// ADD $-100004, R13
// MOVW R14, 0(R13)
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
p.Scond &^= C_WBIT
*q = *p
......@@ -546,7 +546,7 @@ func asmoutnacl(ctxt *obj.Link, origPC int32, p *obj.Prog, o *Optab, out []uint3
ctxt.Diag("unsupported instruction (.P/.W): %v", p)
}
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
*q = *p
if p.To.Type == D_OREG {
a2 = &q.To
......@@ -894,7 +894,7 @@ func flushpool(ctxt *obj.Link, p *obj.Prog, skip int, force int) int {
if false && skip == 1 {
fmt.Printf("note: flush literal pool at %x: len=%d ref=%x\n", uint64(p.Pc+4), pool.size, pool.start)
}
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
q.As = AB
q.To.Type = D_BRANCH
q.Pcond = p.Link
......@@ -906,7 +906,7 @@ func flushpool(ctxt *obj.Link, p *obj.Prog, skip int, force int) int {
}
if ctxt.Headtype == obj.Hnacl && pool.size%16 != 0 {
// if pool is not multiple of 16 bytes, add an alignment marker
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
q.As = ADATABUNDLEEND
ctxt.Elitrl.Link = q
......@@ -983,7 +983,7 @@ func addpool(ctxt *obj.Link, p *obj.Prog, a *obj.Addr) {
if ctxt.Headtype == obj.Hnacl && pool.size%16 == 0 {
// start a new data bundle
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
*q = zprg
q.As = ADATABUNDLE
......@@ -1000,7 +1000,7 @@ func addpool(ctxt *obj.Link, p *obj.Prog, a *obj.Addr) {
ctxt.Elitrl = q
}
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
*q = t
q.Pc = int64(pool.size)
......
......@@ -219,11 +219,8 @@ func progedit(ctxt *obj.Link, p *obj.Prog) {
}
func prg() *obj.Prog {
var p *obj.Prog
p = new(obj.Prog)
*p = zprg5
return p
p := zprg
return &p
}
// Prog.mark
......@@ -789,7 +786,7 @@ func softfloat(ctxt *obj.Link, cursym *obj.LSym) {
soft:
if !(wasfloat != 0) || (p.Mark&LABEL != 0) {
next = ctxt.Arch.Prg()
next = ctxt.NewProg()
*next = *p
// BL _sfloat(SB)
......@@ -954,7 +951,7 @@ func follow(ctxt *obj.Link, s *obj.LSym) {
ctxt.Cursym = s
firstp = ctxt.Arch.Prg()
firstp = ctxt.NewProg()
lastp = firstp
xfol(ctxt, s.Text, &lastp)
lastp.Link = nil
......@@ -1048,7 +1045,7 @@ loop:
copy:
for {
r = ctxt.Arch.Prg()
r = ctxt.NewProg()
*r = *p
if !(r.Mark&FOLL != 0) {
fmt.Printf("can't happen 1\n")
......@@ -1083,7 +1080,7 @@ loop:
}
a = AB
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
q.As = int16(a)
q.Lineno = p.Lineno
q.To.Type = D_BRANCH
......
......@@ -287,11 +287,8 @@ func progedit(ctxt *obj.Link, p *obj.Prog) {
}
func prg() *obj.Prog {
var p *obj.Prog
p = new(obj.Prog)
*p = zprg
return p
p := zprg
return &p
}
func addstacksplit(ctxt *obj.Link, cursym *obj.LSym) {
......@@ -726,7 +723,7 @@ func follow(ctxt *obj.Link, s *obj.LSym) {
ctxt.Cursym = s
firstp = ctxt.Arch.Prg()
firstp = ctxt.NewProg()
lastp = firstp
xfol(ctxt, s.Text, &lastp)
lastp.Link = nil
......@@ -882,7 +879,7 @@ loop:
/* */
}
}
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
q.As = AJMP
q.Lineno = p.Lineno
q.To.Type = D_BRANCH
......
......@@ -144,7 +144,7 @@ func mkfwd(sym *LSym) {
func Copyp(ctxt *Link, q *Prog) *Prog {
var p *Prog
p = ctxt.Arch.Prg()
p = ctxt.NewProg()
*p = *q
return p
}
......@@ -152,7 +152,7 @@ func Copyp(ctxt *Link, q *Prog) *Prog {
func Appendp(ctxt *Link, q *Prog) *Prog {
var p *Prog
p = ctxt.Arch.Prg()
p = ctxt.NewProg()
p.Link = q.Link
q.Link = p
p.Lineno = q.Lineno
......
......@@ -49,7 +49,7 @@ type Addr struct {
Class int8
Etype uint8
Offset2 int32
Node *struct{}
Node interface{}
Width int64
}
......
......@@ -475,14 +475,14 @@ func span9(ctxt *obj.Link, cursym *obj.LSym) {
otxt = p.Pcond.Pc - c
if otxt < -(1<<15)+10 || otxt >= (1<<15)-10 {
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
q.Link = p.Link
p.Link = q
q.As = ABR
q.To.Type = D_BRANCH
q.Pcond = p.Pcond
p.Pcond = q
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
q.Link = p.Link
p.Link = q
q.As = ABR
......
......@@ -599,7 +599,7 @@ func addstacksplit(ctxt *obj.Link, cursym *obj.LSym) {
p.To.Reg = REGSP
p.Spadj = -autosize
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
q.As = ABR
q.Lineno = p.Lineno
q.To.Type = D_SPR
......@@ -619,7 +619,7 @@ func addstacksplit(ctxt *obj.Link, cursym *obj.LSym) {
p.To.Type = D_REG
p.To.Reg = REGTMP
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
q.As = AMOVD
q.Lineno = p.Lineno
q.From.Type = D_REG
......@@ -633,7 +633,7 @@ func addstacksplit(ctxt *obj.Link, cursym *obj.LSym) {
if false {
// Debug bad returns
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
q.As = AMOVD
q.Lineno = p.Lineno
......@@ -649,7 +649,7 @@ func addstacksplit(ctxt *obj.Link, cursym *obj.LSym) {
}
if autosize != 0 {
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
q.As = AADD
q.Lineno = p.Lineno
q.From.Type = D_CONST
......@@ -662,7 +662,7 @@ func addstacksplit(ctxt *obj.Link, cursym *obj.LSym) {
p.Link = q
}
q1 = ctxt.Arch.Prg()
q1 = ctxt.NewProg()
q1.As = ABR
q1.Lineno = p.Lineno
q1.To.Type = D_SPR
......@@ -888,7 +888,7 @@ func follow(ctxt *obj.Link, s *obj.LSym) {
ctxt.Cursym = s
firstp = ctxt.Arch.Prg()
firstp = ctxt.NewProg()
lastp = firstp
xfol(ctxt, s.Text, &lastp)
lastp.Link = nil
......@@ -984,7 +984,7 @@ loop:
copy:
for {
r = ctxt.Arch.Prg()
r = ctxt.NewProg()
*r = *p
if !(r.Mark&FOLL != 0) {
fmt.Printf("cant happen 1\n")
......@@ -1016,7 +1016,7 @@ loop:
}
a = ABR
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
q.As = int16(a)
q.Lineno = p.Lineno
q.To.Type = D_BRANCH
......@@ -1053,11 +1053,8 @@ loop:
}
func prg() *obj.Prog {
var p *obj.Prog
p = new(obj.Prog)
*p = zprg
return p
p := zprg
return &p
}
var Linkppc64 = obj.LinkArch{
......
......@@ -117,3 +117,9 @@ func (p *Prog) String() string {
}
return p.Ctxt.Arch.Pconv(p)
}
func (ctxt *Link) NewProg() *Prog {
p := ctxt.Arch.Prg() // should be the only call to this; all others should use ctxt.NewProg
p.Ctxt = ctxt
return p
}
......@@ -887,7 +887,7 @@ func follow(ctxt *obj.Link, s *obj.LSym) {
ctxt.Cursym = s
firstp = ctxt.Arch.Prg()
firstp = ctxt.NewProg()
lastp = firstp
xfol(ctxt, s.Text, &lastp)
lastp.Link = nil
......@@ -1051,7 +1051,7 @@ loop:
/* */
}
}
q = ctxt.Arch.Prg()
q = ctxt.NewProg()
q.As = AJMP
q.Lineno = p.Lineno
q.To.Type = D_BRANCH
......@@ -1124,11 +1124,8 @@ loop:
}
func prg() *obj.Prog {
var p *obj.Prog
p = new(obj.Prog)
*p = zprg
return p
p := zprg
return &p
}
var Linkamd64 = obj.LinkArch{
......
......@@ -498,7 +498,7 @@ func outcode(a int, g1 *obj.Addr, reg int, g2 *obj.Addr) {
reg = int(g2.Scale)
}
p = asm.Ctxt.Arch.Prg()
p = asm.Ctxt.NewProg()
p.As = int16(a)
p.Lineno = asm.Lineno
if nosched != 0 {
......@@ -531,7 +531,7 @@ func outgcode(a int, g1 *obj.Addr, reg int, g2, g3 *obj.Addr) {
goto out
}
p = asm.Ctxt.Arch.Prg()
p = asm.Ctxt.NewProg()
p.As = int16(a)
p.Lineno = asm.Lineno
if nosched != 0 {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment