1
0
mirror of https://github.com/golang/go synced 2024-09-30 11:28:36 -06:00

cmd/internal/obj: remove unneeded Addr.Node and Prog.Opt fields

Change-Id: I218b241c32a5948b66ad0d95ecc368648cf4ddf5
Reviewed-on: https://go-review.googlesource.com/38130
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
This commit is contained in:
Matthew Dempsky 2017-03-11 17:17:15 -08:00
parent cce4c319d6
commit 7bb5b2d33a
4 changed files with 24 additions and 32 deletions

View File

@ -124,7 +124,6 @@ func Naddr(a *obj.Addr, n *Node) {
a.Offset = n.Xoffset a.Offset = n.Xoffset
s := n.Sym s := n.Sym
a.Node = n.Orig
if s == nil { if s == nil {
Fatalf("naddr: nil sym %v", n) Fatalf("naddr: nil sym %v", n)

View File

@ -4472,13 +4472,11 @@ func AddAux2(a *obj.Addr, v *ssa.Value, offset int64) {
case *ssa.ArgSymbol: case *ssa.ArgSymbol:
n := sym.Node.(*Node) n := sym.Node.(*Node)
a.Name = obj.NAME_PARAM a.Name = obj.NAME_PARAM
a.Node = n
a.Sym = Linksym(n.Orig.Sym) a.Sym = Linksym(n.Orig.Sym)
a.Offset += n.Xoffset a.Offset += n.Xoffset
case *ssa.AutoSymbol: case *ssa.AutoSymbol:
n := sym.Node.(*Node) n := sym.Node.(*Node)
a.Name = obj.NAME_AUTO a.Name = obj.NAME_AUTO
a.Node = n
a.Sym = Linksym(n.Sym) a.Sym = Linksym(n.Sym)
a.Offset += n.Xoffset a.Offset += n.Xoffset
default: default:
@ -4581,7 +4579,6 @@ func AutoVar(v *ssa.Value) (*Node, int64) {
func AddrAuto(a *obj.Addr, v *ssa.Value) { func AddrAuto(a *obj.Addr, v *ssa.Value) {
n, off := AutoVar(v) n, off := AutoVar(v)
a.Type = obj.TYPE_MEM a.Type = obj.TYPE_MEM
a.Node = n
a.Sym = Linksym(n.Sym) a.Sym = Linksym(n.Sym)
a.Reg = int16(thearch.REGSP) a.Reg = int16(thearch.REGSP)
a.Offset = n.Xoffset + off a.Offset = n.Xoffset + off
@ -4598,7 +4595,6 @@ func (s *SSAGenState) AddrScratch(a *obj.Addr) {
} }
a.Type = obj.TYPE_MEM a.Type = obj.TYPE_MEM
a.Name = obj.NAME_AUTO a.Name = obj.NAME_AUTO
a.Node = s.ScratchFpMem
a.Sym = Linksym(s.ScratchFpMem.Sym) a.Sym = Linksym(s.ScratchFpMem.Sym)
a.Reg = int16(thearch.REGSP) a.Reg = int16(thearch.REGSP)
a.Offset = s.ScratchFpMem.Xoffset a.Offset = s.ScratchFpMem.Xoffset

View File

@ -169,8 +169,6 @@ type Addr struct {
// for TYPE_BRANCH, a *Prog (optional) // for TYPE_BRANCH, a *Prog (optional)
// for TYPE_TEXTSIZE, an int32 (optional) // for TYPE_TEXTSIZE, an int32 (optional)
Val interface{} Val interface{}
Node interface{} // for use by compiler
} }
type AddrName int8 type AddrName int8
@ -231,29 +229,28 @@ const (
// The other fields not yet mentioned are for use by the back ends and should // The other fields not yet mentioned are for use by the back ends and should
// be left zeroed by creators of Prog lists. // be left zeroed by creators of Prog lists.
type Prog struct { type Prog struct {
Ctxt *Link // linker context Ctxt *Link // linker context
Link *Prog // next Prog in linked list Link *Prog // next Prog in linked list
From Addr // first source operand From Addr // first source operand
From3 *Addr // third source operand (second is Reg below) From3 *Addr // third source operand (second is Reg below)
To Addr // destination operand (second is RegTo2 below) To Addr // destination operand (second is RegTo2 below)
Pcond *Prog // target of conditional jump Pcond *Prog // target of conditional jump
Opt interface{} // available to optimization passes to hold per-Prog state Forwd *Prog // for x86 back end
Forwd *Prog // for x86 back end Rel *Prog // for x86, arm back ends
Rel *Prog // for x86, arm back ends Pc int64 // for back ends or assembler: virtual or actual program counter, depending on phase
Pc int64 // for back ends or assembler: virtual or actual program counter, depending on phase Pos src.XPos // source position of this instruction
Pos src.XPos // source position of this instruction Spadj int32 // effect of instruction on stack pointer (increment or decrement amount)
Spadj int32 // effect of instruction on stack pointer (increment or decrement amount) As As // assembler opcode
As As // assembler opcode Reg int16 // 2nd source operand
Reg int16 // 2nd source operand RegTo2 int16 // 2nd destination operand
RegTo2 int16 // 2nd destination operand Mark uint16 // bitmask of arch-specific items
Mark uint16 // bitmask of arch-specific items Optab uint16 // arch-specific opcode index
Optab uint16 // arch-specific opcode index Scond uint8 // condition bits for conditional instruction (e.g., on ARM)
Scond uint8 // condition bits for conditional instruction (e.g., on ARM) Back uint8 // for x86 back end: backwards branch state
Back uint8 // for x86 back end: backwards branch state Ft uint8 // for x86 back end: type index of Prog.From
Ft uint8 // for x86 back end: type index of Prog.From Tt uint8 // for x86 back end: type index of Prog.To
Tt uint8 // for x86 back end: type index of Prog.To Isize uint8 // for x86 back end: size of the instruction in bytes
Isize uint8 // for x86 back end: size of the instruction in bytes Mode int8 // for x86 back end: 32- or 64-bit mode
Mode int8 // for x86 back end: 32- or 64-bit mode
} }
// From3Type returns From3.Type, or TYPE_NONE when From3 is nil. // From3Type returns From3.Type, or TYPE_NONE when From3 is nil.

View File

@ -22,9 +22,9 @@ func TestSizeof(t *testing.T) {
_32bit uintptr // size on 32bit platforms _32bit uintptr // size on 32bit platforms
_64bit uintptr // size on 64bit platforms _64bit uintptr // size on 64bit platforms
}{ }{
{Addr{}, 40, 64}, {Addr{}, 32, 48},
{LSym{}, 60, 104}, {LSym{}, 60, 104},
{Prog{}, 148, 232}, {Prog{}, 124, 184},
} }
for _, tt := range tests { for _, tt := range tests {