From 514018c0aa2b0c260d39e080e7d42a4d47185ab0 Mon Sep 17 00:00:00 2001 From: quasilyte Date: Sat, 14 Apr 2018 10:16:21 +0300 Subject: [PATCH] cmd/internal/obj/x86: ifelse->switch, named const for cap=6 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 Run-TryBot: Brad Fitzpatrick --- src/cmd/internal/obj/x86/asm6.go | 28 ++++++++++------------------ src/cmd/internal/obj/x86/ytab.go | 6 +++++- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/src/cmd/internal/obj/x86/asm6.go b/src/cmd/internal/obj/x86/asm6.go index ebf6209dbc..6839734618 100644 --- a/src/cmd/internal/obj/x86/asm6.go +++ b/src/cmd/internal/obj/x86/asm6.go @@ -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) } diff --git a/src/cmd/internal/obj/x86/ytab.go b/src/cmd/internal/obj/x86/ytab.go index dbbef4730e..14bbaf72a9 100644 --- a/src/cmd/internal/obj/x86/ytab.go +++ b/src/cmd/internal/obj/x86/ytab.go @@ -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 -- 2.50.0