]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj: fix build breakage from making From3 a pointer
authorBrad Fitzpatrick <bradfitz@golang.org>
Fri, 29 May 2015 17:00:45 +0000 (10:00 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Fri, 29 May 2015 18:03:32 +0000 (18:03 +0000)
Change-Id: I55a7f455ebbd6b1bd6912aae82c0fcff6f43387c
Reviewed-on: https://go-review.googlesource.com/10512
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/internal/obj/arm64/asm7.go
src/cmd/internal/obj/go.go
src/cmd/internal/obj/link.go
src/cmd/internal/obj/objfile.go
src/cmd/internal/obj/ppc64/asm9.go
src/cmd/internal/obj/x86/obj6.go

index 53f08a3d5e83b035b9bd404122ca425022326066..9537fcecf992575c457266f8422cabc7ecd1f65b 100644 (file)
@@ -2101,7 +2101,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) {
                        }
                } else {
                        /* CSET */
-                       if p.From3.Type != obj.TYPE_NONE {
+                       if p.From3Type() != obj.TYPE_NONE {
                                ctxt.Diag("invalid combination\n%v", p)
                        }
                        rf = REGZERO
index 9c0264e22f1e5c10f5aa07ca6b6d2ac2fa4232e2..3e6cd2163624255e58ffaa47c67a674514dfcc30 100644 (file)
@@ -63,7 +63,9 @@ func Nopout(p *Prog) {
 func Nocache(p *Prog) {
        p.Optab = 0
        p.From.Class = 0
-       p.From3.Class = 0
+       if p.From3 != nil {
+               p.From3.Class = 0
+       }
        p.To.Class = 0
 }
 
index f7728bf080d0d2401efcf9acf25f641d7b9c3628..f96a2951b6c27d3cd4d862ca1b6b9a5fa19db822 100644 (file)
@@ -239,6 +239,14 @@ func (p *Prog) From3Type() int16 {
        return p.From3.Type
 }
 
+// From3Offset returns From3.Offset, or 0 when From3 is nil.
+func (p *Prog) From3Offset() int64 {
+       if p.From3 == nil {
+               return 0
+       }
+       return p.From3.Offset
+}
+
 // ProgInfo holds information about the instruction for use
 // by clients such as the compiler. The exact meaning of this
 // data is up to the client and is not interpreted by the cmd/internal/obj/... packages.
index 35a9ef626fa0a2979c170d9d4f8d97ede3fe54ab..c5f48203628f4c3f49bc40ed5418391b81845019 100644 (file)
@@ -226,7 +226,7 @@ func Writeobjdirect(ctxt *Link, b *Biobuf) {
                                        etext.Next = s
                                }
                                etext = s
-                               flag = int(p.From3.Offset)
+                               flag = int(p.From3Offset())
                                if flag&DUPOK != 0 {
                                        s.Dupok = 1
                                }
index 16574d24071c76706cb2efc4843959172c87f3a8..b9f5ad378f2a927028579c280212e40b5aac731e 100644 (file)
@@ -724,7 +724,7 @@ func oplook(ctxt *obj.Link, p *obj.Prog) *Optab {
        }
 
        a1--
-       a3 := C_NONE
+       a3 := C_NONE + 1
        if p.From3 != nil {
                a3 = int(p.From3.Class)
                if a3 == 0 {
index 4a4785eb4baa8ef9f3c748a2530eeef0528e484b..99168d13c1f0023095d4f3755e8c7a4b7d96b1e9 100644 (file)
@@ -478,7 +478,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
        }
 
        // TODO(rsc): Remove 'p.Mode == 64 &&'.
-       if p.Mode == 64 && autoffset < obj.StackSmall && p.From3.Offset&obj.NOSPLIT == 0 {
+       if p.Mode == 64 && autoffset < obj.StackSmall && p.From3Offset()&obj.NOSPLIT == 0 {
                for q := p; q != nil; q = q.Link {
                        if q.As == obj.ACALL {
                                goto noleaf
@@ -492,13 +492,13 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
        noleaf:
        }
 
-       if p.From3.Offset&obj.NOSPLIT == 0 || (p.From3.Offset&obj.WRAPPER != 0) {
+       if p.From3Offset()&obj.NOSPLIT == 0 || p.From3Offset()&obj.WRAPPER != 0 {
                p = obj.Appendp(ctxt, p)
                p = load_g_cx(ctxt, p) // load g into CX
        }
 
        var q *obj.Prog
-       if cursym.Text.From3.Offset&obj.NOSPLIT == 0 {
+       if cursym.Text.From3Offset()&obj.NOSPLIT == 0 {
                p = stacksplit(ctxt, p, autoffset, int32(textarg), &q) // emit split check
        }
 
@@ -553,7 +553,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
                p.To.Reg = REG_BP
        }
 
-       if cursym.Text.From3.Offset&obj.WRAPPER != 0 {
+       if cursym.Text.From3Offset()&obj.WRAPPER != 0 {
                // if(g->panic != nil && g->panic->argp == FP) g->panic->argp = bottom-of-frame
                //
                //      MOVQ g_panic(CX), BX
@@ -984,7 +984,7 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, textarg int32, jmp
        p.To.Type = obj.TYPE_BRANCH
        if ctxt.Cursym.Cfunc != 0 {
                p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0)
-       } else if ctxt.Cursym.Text.From3.Offset&obj.NEEDCTXT == 0 {
+       } else if ctxt.Cursym.Text.From3Offset()&obj.NEEDCTXT == 0 {
                p.To.Sym = obj.Linklookup(ctxt, "runtime.morestack_noctxt", 0)
        } else {
                p.To.Sym = obj.Linklookup(ctxt, "runtime.morestack", 0)