From 33266df861b6d231ed48b34ebb088cab92454de9 Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Tue, 21 Mar 2017 21:51:10 -0700 Subject: [PATCH] cmd/internal/obj: clean up checkaddr Coalesce identical cases. Give it a proper doc comment. Fix comment locations. Update/delete old comments. Passes toolstash-check -all. Change-Id: I88d9cf20e6e04b0c1c6583e92cd96335831f183f Reviewed-on: https://go-review.googlesource.com/38442 Run-TryBot: Josh Bleecher Snyder TryBot-Result: Gobot Gobot Reviewed-by: Dave Cheney Reviewed-by: Cherry Zhang --- src/cmd/internal/obj/pass.go | 38 +++++++++--------------------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/src/cmd/internal/obj/pass.go b/src/cmd/internal/obj/pass.go index 644f42cab0..9794a109c2 100644 --- a/src/cmd/internal/obj/pass.go +++ b/src/cmd/internal/obj/pass.go @@ -49,31 +49,23 @@ func brloop(ctxt *Link, p *Prog) *Prog { return q } +// checkaddr checks that a has an expected encoding, especially TYPE_CONST vs TYPE_ADDR. func checkaddr(ctxt *Link, p *Prog, a *Addr) { - // Check expected encoding, especially TYPE_CONST vs TYPE_ADDR. switch a.Type { - case TYPE_NONE: + case TYPE_NONE, TYPE_REGREG2, TYPE_REGLIST: return - case TYPE_BRANCH: + case TYPE_BRANCH, TYPE_TEXTSIZE: if a.Reg != 0 || a.Index != 0 || a.Scale != 0 || a.Name != 0 { break } return - case TYPE_TEXTSIZE: - if a.Reg != 0 || a.Index != 0 || a.Scale != 0 || a.Name != 0 { - break - } - return - - //if(a->u.bits != 0) - // break; case TYPE_MEM: return - // TODO(rsc): After fixing SHRQ, check a->index != 0 too. case TYPE_CONST: + // TODO(rsc): After fixing SHRQ, check a.Index != 0 too. if a.Name != 0 || a.Sym != nil || a.Reg != 0 { ctxt.Diag("argument is TYPE_CONST, should be TYPE_ADDR, in %v", p) return @@ -90,9 +82,9 @@ func checkaddr(ctxt *Link, p *Prog, a *Addr) { } return - // TODO(rsc): After fixing PINSRQ, check a->offset != 0 too. - // TODO(rsc): After fixing SHRQ, check a->index != 0 too. case TYPE_REG: + // TODO(rsc): After fixing PINSRQ, check a.Offset != 0 too. + // TODO(rsc): After fixing SHRQ, check a.Index != 0 too. if a.Scale != 0 || a.Name != 0 || a.Sym != nil { break } @@ -107,27 +99,15 @@ func checkaddr(ctxt *Link, p *Prog, a *Addr) { } return - case TYPE_SHIFT: - if a.Index != 0 || a.Scale != 0 || a.Name != 0 || a.Sym != nil || a.Val != nil { - break - } - return - - case TYPE_REGREG: + case TYPE_SHIFT, TYPE_REGREG: if a.Index != 0 || a.Scale != 0 || a.Name != 0 || a.Sym != nil || a.Val != nil { break } return - case TYPE_REGREG2: - return - - case TYPE_REGLIST: - return - - // Expect sym and name to be set, nothing else. - // Technically more is allowed, but this is only used for *name(SB). case TYPE_INDIR: + // Expect sym and name to be set, nothing else. + // Technically more is allowed, but this is only used for *name(SB). if a.Reg != 0 || a.Index != 0 || a.Scale != 0 || a.Name == 0 || a.Offset != 0 || a.Sym == nil || a.Val != nil { break } -- 2.48.1