]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: cleanup after IntSize->PtrSize conversion
authorMatthew Dempsky <mdempsky@google.com>
Sat, 22 Apr 2017 02:16:15 +0000 (19:16 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Sun, 23 Apr 2017 02:07:26 +0000 (02:07 +0000)
Also, replace "PtrSize == 4 && Arch != amd64p32" with "RegSize == 4".

Passes toolstash-check -all.

Updates #19954.

Change-Id: I79b2ee9324f4fa53e34c9271d837ea288b5d7829
Reviewed-on: https://go-review.googlesource.com/41491
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/compile/internal/gc/reflect.go
src/cmd/compile/internal/gc/ssa.go
src/cmd/compile/internal/gc/universe.go
src/cmd/compile/internal/ssa/decompose.go
src/cmd/compile/internal/ssa/opt.go

index 80404df1260ca8866b60d54882d19a921ad9afa4..6db48a4fb98103ce9f04bd953aa48b8fdf53d12d 100644 (file)
@@ -1185,7 +1185,7 @@ ok:
                }
                ot = dgopkgpath(lsym, ot, tpkg)
 
-               ot = dsymptr(lsym, ot, lsym, ot+Widthptr+2*Widthptr+uncommonSize(t))
+               ot = dsymptr(lsym, ot, lsym, ot+3*Widthptr+uncommonSize(t))
                ot = duintptr(lsym, ot, uint64(n))
                ot = duintptr(lsym, ot, uint64(n))
                dataAdd := imethodSize() * n
@@ -1277,7 +1277,7 @@ ok:
                        }
                }
                ot = dgopkgpath(lsym, ot, pkg)
-               ot = dsymptr(lsym, ot, lsym, ot+Widthptr+2*Widthptr+uncommonSize(t))
+               ot = dsymptr(lsym, ot, lsym, ot+3*Widthptr+uncommonSize(t))
                ot = duintptr(lsym, ot, uint64(n))
                ot = duintptr(lsym, ot, uint64(n))
 
index a56c25bef9bc0678c988c1507d8b07ffd58fb4b2..356a61e711afc3b49842bcf2620d714509fcd138 100644 (file)
@@ -1602,12 +1602,12 @@ func (s *state) expr(n *Node) *ssa.Value {
 
                if ft.IsFloat() || tt.IsFloat() {
                        conv, ok := fpConvOpToSSA[twoTypes{s.concreteEtype(ft), s.concreteEtype(tt)}]
-                       if s.config.PtrSize == 4 && thearch.LinkArch.Name != "amd64p32" && thearch.LinkArch.Family != sys.MIPS {
+                       if s.config.RegSize == 4 && thearch.LinkArch.Family != sys.MIPS {
                                if conv1, ok1 := fpConvOpToSSA32[twoTypes{s.concreteEtype(ft), s.concreteEtype(tt)}]; ok1 {
                                        conv = conv1
                                }
                        }
-                       if thearch.LinkArch.Name == "arm64" {
+                       if thearch.LinkArch.Family == sys.ARM64 {
                                if conv1, ok1 := uint64fpConvOpToSSA[twoTypes{s.concreteEtype(ft), s.concreteEtype(tt)}]; ok1 {
                                        conv = conv1
                                }
@@ -2494,17 +2494,10 @@ func init() {
        intrinsics = map[intrinsicKey]intrinsicBuilder{}
 
        var all []*sys.Arch
-       var i4 []*sys.Arch
-       var i8 []*sys.Arch
        var p4 []*sys.Arch
        var p8 []*sys.Arch
        for _, a := range sys.Archs {
                all = append(all, a)
-               if a.PtrSize == 4 {
-                       i4 = append(i4, a)
-               } else {
-                       i8 = append(i8, a)
-               }
                if a.PtrSize == 4 {
                        p4 = append(p4, a)
                } else {
@@ -2689,8 +2682,8 @@ func init() {
 
        alias("runtime/internal/atomic", "Loadint64", "runtime/internal/atomic", "Load64", all...)
        alias("runtime/internal/atomic", "Xaddint64", "runtime/internal/atomic", "Xadd64", all...)
-       alias("runtime/internal/atomic", "Loaduint", "runtime/internal/atomic", "Load", i4...)
-       alias("runtime/internal/atomic", "Loaduint", "runtime/internal/atomic", "Load64", i8...)
+       alias("runtime/internal/atomic", "Loaduint", "runtime/internal/atomic", "Load", p4...)
+       alias("runtime/internal/atomic", "Loaduint", "runtime/internal/atomic", "Load64", p8...)
        alias("runtime/internal/atomic", "Loaduintptr", "runtime/internal/atomic", "Load", p4...)
        alias("runtime/internal/atomic", "Loaduintptr", "runtime/internal/atomic", "Load64", p8...)
        alias("runtime/internal/atomic", "Storeuintptr", "runtime/internal/atomic", "Store", p4...)
@@ -3476,11 +3469,7 @@ func (s *state) rtcall(fn *obj.LSym, returns bool, results []*types.Type, args .
                s.vars[&memVar] = s.newValue3A(ssa.OpStore, ssa.TypeMem, t, ptr, arg, s.mem())
                off += size
        }
-       off = Rnd(off, int64(Widthptr))
-       if thearch.LinkArch.Name == "amd64p32" {
-               // amd64p32 wants 8-byte alignment of the start of the return values.
-               off = Rnd(off, 8)
-       }
+       off = Rnd(off, int64(Widthreg))
 
        // Issue call
        call := s.newValue1A(ssa.OpStaticCall, ssa.TypeMem, fn, s.mem())
index 1a6dcf487d4bffad60aad7a116df6411ea782957..7a098c7800b22c01f19d9639213ad1b9079361e3 100644 (file)
@@ -36,13 +36,12 @@ var basicTypes = [...]struct {
 var typedefs = [...]struct {
        name     string
        etype    types.EType
-       width    *int
        sameas32 types.EType
        sameas64 types.EType
 }{
-       {"int", TINT, &Widthptr, TINT32, TINT64},
-       {"uint", TUINT, &Widthptr, TUINT32, TUINT64},
-       {"uintptr", TUINTPTR, &Widthptr, TUINT32, TUINT64},
+       {"int", TINT, TINT32, TINT64},
+       {"uint", TUINT, TUINT32, TUINT64},
+       {"uintptr", TUINTPTR, TUINT32, TUINT64},
 }
 
 var builtinFuncs = [...]struct {
@@ -276,7 +275,6 @@ func typeinit() {
 
        // binary
        okfor[OADD] = okforadd[:]
-
        okfor[OAND] = okforand[:]
        okfor[OANDAND] = okforbool[:]
        okfor[OANDNOT] = okforand[:]
@@ -298,19 +296,16 @@ func typeinit() {
 
        // unary
        okfor[OCOM] = okforand[:]
-
        okfor[OMINUS] = okforarith[:]
        okfor[ONOT] = okforbool[:]
        okfor[OPLUS] = okforarith[:]
 
        // special
        okfor[OCAP] = okforcap[:]
-
        okfor[OLEN] = okforlen[:]
 
        // comparison
        iscmp[OLT] = true
-
        iscmp[OGT] = true
        iscmp[OGE] = true
        iscmp[OLE] = true
@@ -353,7 +348,6 @@ func typeinit() {
 
        // simple aliases
        simtype[TMAP] = types.Tptr
-
        simtype[TCHAN] = types.Tptr
        simtype[TFUNC] = types.Tptr
        simtype[TUNSAFEPTR] = types.Tptr
@@ -424,7 +418,7 @@ func lexinit1() {
                s1 := builtinpkg.Lookup(s.name)
 
                sameas := s.sameas32
-               if *s.width == 8 {
+               if Widthptr == 8 {
                        sameas = s.sameas64
                }
 
index b629a64e1556845535e9aa7e99cc0e5f0fabbce4..beb89e331424a8b9647b91b4022f177a8f31d457 100644 (file)
@@ -25,7 +25,7 @@ func decomposeBuiltIn(f *Func) {
        for _, name := range f.Names {
                t := name.Type
                switch {
-               case t.IsInteger() && t.Size() == 8 && f.Config.PtrSize == 4:
+               case t.IsInteger() && t.Size() > f.Config.RegSize:
                        var elemType Type
                        if t.IsSigned() {
                                elemType = f.Config.Types.Int32
@@ -95,8 +95,8 @@ func decomposeBuiltIn(f *Func) {
                        }
                        delete(f.NamedValues, name)
                case t.IsFloat():
-                       // floats are never decomposed, even ones bigger than PtrSize
-               case t.Size() > f.Config.PtrSize:
+                       // floats are never decomposed, even ones bigger than RegSize
+               case t.Size() > f.Config.RegSize:
                        f.Fatalf("undecomposed named type %v %v", name, t)
                default:
                        newNames = append(newNames, name)
@@ -107,11 +107,7 @@ func decomposeBuiltIn(f *Func) {
 
 func decomposeBuiltInPhi(v *Value) {
        switch {
-       case v.Type.IsInteger() && v.Type.Size() == 8 && v.Block.Func.Config.PtrSize == 4:
-               if v.Block.Func.Config.arch == "amd64p32" {
-                       // Even though ints are 32 bits, we have 64-bit ops.
-                       break
-               }
+       case v.Type.IsInteger() && v.Type.Size() > v.Block.Func.Config.RegSize:
                decomposeInt64Phi(v)
        case v.Type.IsComplex():
                decomposeComplexPhi(v)
@@ -122,8 +118,8 @@ func decomposeBuiltInPhi(v *Value) {
        case v.Type.IsInterface():
                decomposeInterfacePhi(v)
        case v.Type.IsFloat():
-               // floats are never decomposed, even ones bigger than PtrSize
-       case v.Type.Size() > v.Block.Func.Config.PtrSize:
+               // floats are never decomposed, even ones bigger than RegSize
+       case v.Type.Size() > v.Block.Func.Config.RegSize:
                v.Fatalf("undecomposed type %s", v.Type)
        }
 }
index 7703d8b70414a4dbb20ec7109da21cb8fb6d871e..670b535a338e9d765bb0e885c511b368eebacd72 100644 (file)
@@ -11,7 +11,7 @@ func opt(f *Func) {
 
 func dec(f *Func) {
        applyRewrite(f, rewriteBlockdec, rewriteValuedec)
-       if f.Config.PtrSize == 4 && f.Config.arch != "amd64p32" {
+       if f.Config.RegSize == 4 {
                applyRewrite(f, rewriteBlockdec64, rewriteValuedec64)
        }
 }