diff options
| author | Keith Randall <khr@golang.org> | 2016-02-29 13:31:48 -0800 |
|---|---|---|
| committer | Keith Randall <khr@golang.org> | 2016-02-29 13:32:20 -0800 |
| commit | 4fffd4569d321feeceb1daf73595155e049bc1c4 (patch) | |
| tree | 60b1a5a80a498b9baa5258a50845c092e8d51ea4 /src/cmd/asm | |
| parent | 4e95dfed0197ee6fdf96dc1aa632297a28a1cd95 (diff) | |
| parent | 71cc445cf92dd3014e8b382809ed1b9c077e7973 (diff) | |
| download | go-4fffd4569d321feeceb1daf73595155e049bc1c4.tar.xz | |
[dev.ssa] Merge remote-tracking branch 'origin/master' into ssamerge
(Last?) Semi-regular merge from tip to dev.ssa.
Conflicts:
src/cmd/compile/internal/gc/closure.go
src/cmd/compile/internal/gc/gsubr.go
src/cmd/compile/internal/gc/lex.go
src/cmd/compile/internal/gc/pgen.go
src/cmd/compile/internal/gc/syntax.go
src/cmd/compile/internal/gc/walk.go
src/cmd/internal/obj/pass.go
Change-Id: Ib5ea8bf74d420f4902a9c6208761be9f22371ae7
Diffstat (limited to 'src/cmd/asm')
| -rw-r--r-- | src/cmd/asm/doc.go | 2 | ||||
| -rw-r--r-- | src/cmd/asm/internal/asm/endtoend_test.go | 2 | ||||
| -rw-r--r-- | src/cmd/asm/internal/asm/parse.go | 25 | ||||
| -rw-r--r-- | src/cmd/asm/internal/asm/pseudo_test.go | 4 | ||||
| -rw-r--r-- | src/cmd/asm/internal/asm/testdata/arm64.s | 2 | ||||
| -rw-r--r-- | src/cmd/asm/internal/flags/flags.go | 2 | ||||
| -rw-r--r-- | src/cmd/asm/internal/lex/input.go | 2 | ||||
| -rw-r--r-- | src/cmd/asm/internal/lex/lex.go | 2 | ||||
| -rw-r--r-- | src/cmd/asm/main.go | 4 |
9 files changed, 25 insertions, 20 deletions
diff --git a/src/cmd/asm/doc.go b/src/cmd/asm/doc.go index a9c8bfb7db..aa62147957 100644 --- a/src/cmd/asm/doc.go +++ b/src/cmd/asm/doc.go @@ -20,7 +20,7 @@ The GOOS and GOARCH environment variables set the desired target. Flags: -D value - predefined symbol with optional simple value -D=identifer=value; + predefined symbol with optional simple value -D=identifier=value; can be set multiple times -I value include directory; can be set multiple times diff --git a/src/cmd/asm/internal/asm/endtoend_test.go b/src/cmd/asm/internal/asm/endtoend_test.go index 4bc7e2fb74..4a3e0ee265 100644 --- a/src/cmd/asm/internal/asm/endtoend_test.go +++ b/src/cmd/asm/internal/asm/endtoend_test.go @@ -179,7 +179,7 @@ Diff: t.Errorf(format, args...) ok = false } - obj.Flushplist(ctxt) + obj.FlushplistNoFree(ctxt) for p := top; p != nil; p = p.Link { if p.As == obj.ATEXT { diff --git a/src/cmd/asm/internal/asm/parse.go b/src/cmd/asm/internal/asm/parse.go index 4258c5ce26..6c324ce3af 100644 --- a/src/cmd/asm/internal/asm/parse.go +++ b/src/cmd/asm/internal/asm/parse.go @@ -297,7 +297,7 @@ func (p *Parser) operand(a *obj.Addr) bool { p.errorf("illegal use of register list") } p.registerList(a) - p.expect(scanner.EOF) + p.expectOperandEnd() return true } @@ -331,7 +331,7 @@ func (p *Parser) operand(a *obj.Addr) bool { } } // fmt.Printf("REG %s\n", obj.Dconv(&emptyProg, 0, a)) - p.expect(scanner.EOF) + p.expectOperandEnd() return true } @@ -363,7 +363,7 @@ func (p *Parser) operand(a *obj.Addr) bool { a.Type = obj.TYPE_FCONST a.Val = p.floatExpr() // fmt.Printf("FCONST %s\n", obj.Dconv(&emptyProg, 0, a)) - p.expect(scanner.EOF) + p.expectOperandEnd() return true } if p.have(scanner.String) { @@ -378,7 +378,7 @@ func (p *Parser) operand(a *obj.Addr) bool { a.Type = obj.TYPE_SCONST a.Val = str // fmt.Printf("SCONST %s\n", obj.Dconv(&emptyProg, 0, a)) - p.expect(scanner.EOF) + p.expectOperandEnd() return true } a.Offset = int64(p.expr()) @@ -392,7 +392,7 @@ func (p *Parser) operand(a *obj.Addr) bool { a.Type = obj.TYPE_MEM } // fmt.Printf("CONST %d %s\n", a.Offset, obj.Dconv(&emptyProg, 0, a)) - p.expect(scanner.EOF) + p.expectOperandEnd() return true } // fmt.Printf("offset %d \n", a.Offset) @@ -402,7 +402,7 @@ func (p *Parser) operand(a *obj.Addr) bool { p.registerIndirect(a, prefix) // fmt.Printf("DONE %s\n", p.arch.Dconv(&emptyProg, 0, a)) - p.expect(scanner.EOF) + p.expectOperandEnd() return true } @@ -983,14 +983,19 @@ func (p *Parser) more() bool { // get verifies that the next item has the expected type and returns it. func (p *Parser) get(expected lex.ScanToken) lex.Token { - p.expect(expected) + p.expect(expected, expected.String()) return p.next() } +// expectOperandEnd verifies that the parsing state is properly at the end of an operand. +func (p *Parser) expectOperandEnd() { + p.expect(scanner.EOF, "end of operand") +} + // expect verifies that the next item has the expected type. It does not consume it. -func (p *Parser) expect(expected lex.ScanToken) { - if p.peek() != expected { - p.errorf("expected %s, found %s", expected, p.next()) +func (p *Parser) expect(expectedToken lex.ScanToken, expectedMessage string) { + if p.peek() != expectedToken { + p.errorf("expected %s, found %s", expectedMessage, p.next()) } } diff --git a/src/cmd/asm/internal/asm/pseudo_test.go b/src/cmd/asm/internal/asm/pseudo_test.go index ee13b724eb..2e6d6c8154 100644 --- a/src/cmd/asm/internal/asm/pseudo_test.go +++ b/src/cmd/asm/internal/asm/pseudo_test.go @@ -35,8 +35,8 @@ func TestErroneous(t *testing.T) { {"TEXT", "%", "expect two or three operands for TEXT"}, {"TEXT", "1, 1", "TEXT symbol \"<erroneous symbol>\" must be a symbol(SB)"}, {"TEXT", "$\"foo\", 0, $1", "TEXT symbol \"<erroneous symbol>\" must be a symbol(SB)"}, - {"TEXT", "$0É:0, 0, $1", "expected EOF, found É"}, // Issue #12467. - {"TEXT", "$:0:(SB, 0, $1", "expected '(', found 0"}, // Issue 12468. + {"TEXT", "$0É:0, 0, $1", "expected end of operand, found É"}, // Issue #12467. + {"TEXT", "$:0:(SB, 0, $1", "expected '(', found 0"}, // Issue 12468. {"FUNCDATA", "", "expect two operands for FUNCDATA"}, {"FUNCDATA", "(SB ", "expect two operands for FUNCDATA"}, {"DATA", "", "expect two operands for DATA"}, diff --git a/src/cmd/asm/internal/asm/testdata/arm64.s b/src/cmd/asm/internal/asm/testdata/arm64.s index 22d430631c..6466da7190 100644 --- a/src/cmd/asm/internal/asm/testdata/arm64.s +++ b/src/cmd/asm/internal/asm/testdata/arm64.s @@ -237,7 +237,7 @@ again: // // LSTXR reg ',' addr ',' reg // { -// outtcode($1, &$2, &$4, &$6); +// outcode($1, &$2, &$4, &$6); // } LDAXRW (R0), R2 STLXRW R1, (R0), R3 diff --git a/src/cmd/asm/internal/flags/flags.go b/src/cmd/asm/internal/flags/flags.go index 9f3c3bfc1d..4557c2a7f9 100644 --- a/src/cmd/asm/internal/flags/flags.go +++ b/src/cmd/asm/internal/flags/flags.go @@ -29,7 +29,7 @@ var ( ) func init() { - flag.Var(&D, "D", "predefined symbol with optional simple value -D=identifer=value; can be set multiple times") + flag.Var(&D, "D", "predefined symbol with optional simple value -D=identifier=value; can be set multiple times") flag.Var(&I, "I", "include directory; can be set multiple times") } diff --git a/src/cmd/asm/internal/lex/input.go b/src/cmd/asm/internal/lex/input.go index 33b9d8adea..4855daa892 100644 --- a/src/cmd/asm/internal/lex/input.go +++ b/src/cmd/asm/internal/lex/input.go @@ -30,7 +30,7 @@ type Input struct { peekText string } -// NewInput returns a +// NewInput returns an Input from the given path. func NewInput(name string) *Input { return &Input{ // include directories: look in source dir, then -I directories. diff --git a/src/cmd/asm/internal/lex/lex.go b/src/cmd/asm/internal/lex/lex.go index 6fce55f7f4..81339059b1 100644 --- a/src/cmd/asm/internal/lex/lex.go +++ b/src/cmd/asm/internal/lex/lex.go @@ -77,7 +77,7 @@ func NewLexer(name string, ctxt *obj.Link) TokenReader { input := NewInput(name) fd, err := os.Open(name) if err != nil { - log.Fatalf("asm: %s\n", err) + log.Fatalf("%s\n", err) } input.Push(NewTokenizer(name, fd, fd)) return input diff --git a/src/cmd/asm/main.go b/src/cmd/asm/main.go index f48050c137..4e450bec98 100644 --- a/src/cmd/asm/main.go +++ b/src/cmd/asm/main.go @@ -26,7 +26,7 @@ func main() { architecture := arch.Set(GOARCH) if architecture == nil { - log.Fatalf("asm: unrecognized architecture %s", GOARCH) + log.Fatalf("unrecognized architecture %s", GOARCH) } flags.Parse() @@ -66,7 +66,7 @@ func main() { obj.Writeobjdirect(ctxt, output) } if !ok || diag { - log.Printf("asm: assembly of %s failed", flag.Arg(0)) + log.Printf("assembly of %s failed", flag.Arg(0)) os.Remove(*flags.OutputFile) os.Exit(1) } |
