]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj/x86: ifelse->switch, named const for cap=6
authorquasilyte <quasilyte@gmail.com>
Sat, 14 Apr 2018 07:16:21 +0000 (10:16 +0300)
committerBrad Fitzpatrick <bradfitz@golang.org>
Fri, 20 Apr 2018 20:39:31 +0000 (20:39 +0000)
Part of the x86 asm backend cleanup. Passes toolstash-check.

Change-Id: Ib9766689fb7edb07f5553868cf89175501ea1e1b
Reviewed-on: https://go-review.googlesource.com/107055
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>

src/cmd/internal/obj/x86/asm6.go
src/cmd/internal/obj/x86/ytab.go

index ebf6209dbc8354c2688d5429694e6306ff7ad658..6839734618a8adb6406012163109ed4dae4732b7 100644 (file)
@@ -2684,8 +2684,6 @@ func oclass(ctxt *obj.Link, p *obj.Prog, a *obj.Addr) int {
                }
                fallthrough
 
-               // fall through
-
        case obj.TYPE_CONST:
                if a.Sym != nil {
                        ctxt.Diag("TYPE_CONST with symbol: %v", obj.Dconv(p, a))
@@ -2695,22 +2693,18 @@ func oclass(ctxt *obj.Link, p *obj.Prog, a *obj.Addr) int {
                if ctxt.Arch.Family == sys.I386 {
                        v = int64(int32(v))
                }
-               if v == 0 {
+               switch {
+               case v == 0:
                        return Yi0
-               }
-               if v == 1 {
+               case v == 1:
                        return Yi1
-               }
-               if v >= 0 && v <= 3 {
+               case v >= 0 && v <= 3:
                        return Yu2
-               }
-               if v >= 0 && v <= 127 {
+               case v >= 0 && v <= 127:
                        return Yu7
-               }
-               if v >= 0 && v <= 255 {
+               case v >= 0 && v <= 255:
                        return Yu8
-               }
-               if v >= -128 && v <= 127 {
+               case v >= -128 && v <= 127:
                        return Yi8
                }
                if ctxt.Arch.Family == sys.I386 {
@@ -3776,12 +3770,10 @@ func (ab *AsmBuf) doasm(ctxt *obj.Link, cursym *obj.LSym, p *obj.Prog) {
                return
        }
 
-       pre := prefixof(ctxt, &p.From)
-       if pre != 0 {
+       if pre := prefixof(ctxt, &p.From); pre != 0 {
                ab.Put1(byte(pre))
        }
-       pre = prefixof(ctxt, &p.To)
-       if pre != 0 {
+       if pre := prefixof(ctxt, &p.To); pre != 0 {
                ab.Put1(byte(pre))
        }
 
@@ -3822,7 +3814,7 @@ func (ab *AsmBuf) doasm(ctxt *obj.Link, cursym *obj.LSym, p *obj.Prog) {
        var rel obj.Reloc
        var v int64
 
-       args := make([]int, 0, 6)
+       args := make([]int, 0, argListMax)
        if ft != Ynone*Ymax {
                args = append(args, ft)
        }
index dbbef4730e8e1942168e966fceed4a1d634d5bc7..14bbaf72a943738f4100770c0c1943a9f513b067 100644 (file)
@@ -4,7 +4,11 @@
 
 package x86
 
-type argList [6]uint8
+// argListMax specifies upper arg count limit expected to be carried by obj.Prog.
+// Max len(obj.Prog.RestArgs) can be inferred from this to be 4.
+const argListMax int = 6
+
+type argList [argListMax]uint8
 
 type ytab struct {
        zcase   uint8