]> Cypherpunks repositories - gostls13.git/log
gostls13.git
8 years agonet: add Resolver type, Dialer.Resolver, and DefaultResolver
Brad Fitzpatrick [Tue, 20 Sep 2016 19:45:37 +0000 (19:45 +0000)]
net: add Resolver type, Dialer.Resolver, and DefaultResolver

The new Resolver type (a struct) has 9 Lookup methods, all taking a
context.Context.

There's now a new DefaultResolver global, like http's
DefaultTransport and DefaultClient.

net.Dialer now has an optional Resolver field to set the Resolver.

This also does finishes some resolver cleanup internally, deleting
lookupIPMerge and renaming lookupIPContext into Resolver.LookupIPAddr.

The Resolver currently doesn't let you tweak much, but it's a struct
specifically so we can add knobs in the future. Currently I just added
a bool to force the pure Go resolver. In the future we could let
people provide an interface to implement the methods, or add a Timeout
time.Duration, which would wrap all provided contexts in a
context.WithTimeout.

Fixes #16672

Change-Id: I7ba1f886704f06def7b6b5c4da9809db51bc1495
Reviewed-on: https://go-review.googlesource.com/29440
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agonet/http/httptest: fill ContentLength in recorded Response
Thomas de Zeeuw [Thu, 1 Sep 2016 12:54:08 +0000 (14:54 +0200)]
net/http/httptest: fill ContentLength in recorded Response

This change fills the ContentLength field in the http.Response returned by
ResponseRecorder.Result.

Fixes #16952.

Change-Id: I9c49b1bf83e3719b5275b03a43aff5033156637d
Reviewed-on: https://go-review.googlesource.com/28302
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agonet/http/cookiejar: fix typo
Michal Bohuslávek [Wed, 21 Sep 2016 13:49:51 +0000 (14:49 +0100)]
net/http/cookiejar: fix typo

Change-Id: I6ea8650927e7946c6fd4659f400fd91ddaae68af
Reviewed-on: https://go-review.googlesource.com/29510
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agoruntime: remove unnecessary atomics from heapBitSetType
Austin Clements [Mon, 9 May 2016 19:12:07 +0000 (15:12 -0400)]
runtime: remove unnecessary atomics from heapBitSetType

These used to be necessary when racing with updates to the mark bit,
but since the mark bit is no longer in the bitmap and the checkmark is
only updated with the world stopped, we can now always use regular
writes to update the type information in the heap bitmap.

Somewhat surprisingly, this has basically no overall performance
effect beyond the usual noise, but it does clean up the code.

Change-Id: I3933d0b4c0bc1c9bcf6313613515c0b496212105
Reviewed-on: https://go-review.googlesource.com/29277
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rick Hudson <rlh@golang.org>
8 years agodoc: add note about CL 29491 to go1.8.txt
Mikio Hara [Wed, 21 Sep 2016 04:04:38 +0000 (13:04 +0900)]
doc: add note about CL 29491 to go1.8.txt

Change-Id: I808fab97076493a95b0b5eb0ad15645099f54aee
Reviewed-on: https://go-review.googlesource.com/29492
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agosyscall: fix build on dragonfly
Mikio Hara [Wed, 21 Sep 2016 03:53:25 +0000 (12:53 +0900)]
syscall: fix build on dragonfly

This change fixes the broken build caused by CL 23780.

Change-Id: I142cf8a1af033d036d57ac56e9e21ea925d922d4
Reviewed-on: https://go-review.googlesource.com/29490
Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/internal/obj: remove unused GOROOT-related fields
Matthew Dempsky [Wed, 21 Sep 2016 01:12:27 +0000 (18:12 -0700)]
cmd/internal/obj: remove unused GOROOT-related fields

Change-Id: I6634f70d6bd1a4eced47eda69a2d9b207d222a1b
Reviewed-on: https://go-review.googlesource.com/29470
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
8 years agocmd/internal/obj: remove unused Textp and Etextp fields
Matthew Dempsky [Wed, 21 Sep 2016 01:02:27 +0000 (18:02 -0700)]
cmd/internal/obj: remove unused Textp and Etextp fields

Change-Id: Idcb5a8d6676aa38b4ebd0975edd2068386f5ca83
Reviewed-on: https://go-review.googlesource.com/29449
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agoos: use GetConsoleCP() instead of GetACP()
Yasuhiro Matsumoto [Wed, 24 Aug 2016 01:34:16 +0000 (10:34 +0900)]
os: use GetConsoleCP() instead of GetACP()

It is possible (and common) for Windows systems to use a different codepage
for console applications from that used on normal windowed application
(called ANSI codepage); for instance, most of the western Europe uses
CP850 for console (for backward compatibility with MS-DOS), while
windowed applications use a different codepage depending on the country
(eg: CP1252 aka Latin-1). The usage being changed with this commit is
specifically related to decoding input coming from the console, so the
previous usage of the ANSI codepage was wrong.

Also fixes an issue that previous did convert bytes as NFD. Go is
designed to handle single Unicode code point. This fix change behaivor
to NFC.

Fixes #16857.

Change-Id: I4f41ae83ece47321b6e9a79a2087ecbb8ac066dd
Reviewed-on: https://go-review.googlesource.com/27575
Reviewed-by: Hiroshi Ioka <hirochachacha@gmail.com>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
8 years agoimage/draw: add FloydSteinberg Drawer example
Brad Fitzpatrick [Tue, 20 Sep 2016 23:43:15 +0000 (23:43 +0000)]
image/draw: add FloydSteinberg Drawer example

Updates #16360

Change-Id: I80b981aa291a8e16d2986d4a2dfd84d3819bf488
Reviewed-on: https://go-review.googlesource.com/29443
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
8 years agodoc: add some missing HTML tags in the FAQ
Brad Fitzpatrick [Tue, 20 Sep 2016 21:52:11 +0000 (21:52 +0000)]
doc: add some missing HTML tags in the FAQ

Fixes #17170

Change-Id: I939f087df133710495fdf6f09040051cb9b176d7
Reviewed-on: https://go-review.googlesource.com/29442
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/compile: improve tighten pass
Keith Randall [Wed, 7 Sep 2016 21:04:31 +0000 (14:04 -0700)]
cmd/compile: improve tighten pass

Move a value to the block which is the lowest common ancestor in the
dominator tree of all of its uses.  Make sure not to move a value into a
loop.

Makes the tighten pass on average (across go1 benchmarks) 40% slower.
Still not a big contributor to overall compile time.

Binary size is just a tad smaller.

name                      old time/op    new time/op    delta
BinaryTree17-12              2.77s ± 9%     2.76s ± 9%     ~     (p=0.878 n=8+8)
Fannkuch11-12                2.75s ± 1%     2.74s ± 1%     ~     (p=0.232 n=8+7)
FmtFprintfEmpty-12          48.9ns ± 9%    47.7ns ± 0%     ~     (p=0.431 n=8+8)
FmtFprintfString-12          143ns ± 8%     142ns ± 1%     ~     (p=0.257 n=8+7)
FmtFprintfInt-12             123ns ± 1%     122ns ± 1%   -1.04%  (p=0.026 n=7+8)
FmtFprintfIntInt-12          195ns ± 7%     185ns ± 0%   -5.32%  (p=0.000 n=8+8)
FmtFprintfPrefixedInt-12     194ns ± 4%     195ns ± 0%   +0.81%  (p=0.015 n=7+7)
FmtFprintfFloat-12           267ns ± 0%     268ns ± 0%   +0.37%  (p=0.001 n=7+6)
FmtManyArgs-12               800ns ± 0%     762ns ± 1%   -4.78%  (p=0.000 n=8+8)
GobDecode-12                7.67ms ± 2%    7.60ms ± 2%     ~     (p=0.234 n=8+8)
GobEncode-12                6.55ms ± 0%    6.57ms ± 1%     ~     (p=0.336 n=7+8)
Gzip-12                      237ms ± 0%     238ms ± 0%   +0.40%  (p=0.017 n=7+7)
Gunzip-12                   40.8ms ± 0%    40.2ms ± 0%   -1.52%  (p=0.000 n=7+8)
HTTPClientServer-12          208µs ± 3%     209µs ± 3%     ~     (p=0.955 n=8+7)
JSONEncode-12               16.2ms ± 1%    17.2ms ±11%   +5.80%  (p=0.001 n=7+8)
JSONDecode-12               57.3ms ±12%    55.5ms ± 3%     ~     (p=0.867 n=8+7)
Mandelbrot200-12            4.68ms ± 6%    4.46ms ± 1%     ~     (p=0.442 n=8+8)
GoParse-12                  4.27ms ±44%    3.42ms ± 1%  -19.95%  (p=0.005 n=8+8)
RegexpMatchEasy0_32-12      75.1ns ± 0%    75.8ns ± 1%   +0.99%  (p=0.002 n=7+7)
RegexpMatchEasy0_1K-12       963ns ± 0%    1021ns ± 6%   +5.98%  (p=0.001 n=7+7)
RegexpMatchEasy1_32-12      72.4ns ±11%    70.8ns ± 1%     ~     (p=0.368 n=8+8)
RegexpMatchEasy1_1K-12       394ns ± 1%     399ns ± 0%   +1.23%  (p=0.000 n=8+7)
RegexpMatchMedium_32-12      114ns ± 0%     115ns ± 1%   +0.63%  (p=0.021 n=7+7)
RegexpMatchMedium_1K-12     35.9µs ± 0%    37.6µs ± 1%   +4.72%  (p=0.000 n=7+8)
RegexpMatchHard_32-12       1.93µs ± 2%    1.91µs ± 0%   -0.91%  (p=0.001 n=7+7)
RegexpMatchHard_1K-12       60.2µs ± 3%    61.2µs ±10%     ~     (p=0.442 n=8+8)
Revcomp-12                   404ms ± 1%     406ms ± 1%     ~     (p=0.054 n=8+7)
Template-12                 64.6ms ± 1%    63.5ms ± 1%   -1.66%  (p=0.000 n=8+8)
TimeParse-12                 347ns ± 8%     309ns ± 0%  -11.13%  (p=0.000 n=8+7)
TimeFormat-12                343ns ± 4%     331ns ± 0%   -3.34%  (p=0.000 n=8+7)

Change-Id: Id6da1239ddd4d0cb074ff29cffb06302d1c6d08f
Reviewed-on: https://go-review.googlesource.com/28712
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
8 years agocmd/compile: simple cleanups
Keith Randall [Tue, 20 Sep 2016 20:59:40 +0000 (13:59 -0700)]
cmd/compile: simple cleanups

Change-Id: If2cf3c5a29afc6cf74c3b08b9745e950231ead37
Reviewed-on: https://go-review.googlesource.com/29441
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agosyscall: validate ParseDirent inputs
Damien Neil [Fri, 3 Jun 2016 22:04:53 +0000 (15:04 -0700)]
syscall: validate ParseDirent inputs

Don't panic, crash, or return references to uninitialized memory when
ParseDirent is passed invalid input.

Move common dirent parsing to syscall.go with minimal platform-specific
functions in syscall_$GOOS.go.

Fixes #15653

Change-Id: I5602475e02321fe381064488401c14b33bec6886
Reviewed-on: https://go-review.googlesource.com/23780
Run-TryBot: Damien Neil <dneil@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agoruntime: consistency check for G rescan position
Austin Clements [Thu, 25 Aug 2016 15:50:50 +0000 (11:50 -0400)]
runtime: consistency check for G rescan position

Issue #17099 shows a failure that indicates we rescanned a stack twice
concurrently during mark termination, which suggests that the rescan
list became inconsistent. Add a simple check when we dequeue something
from the rescan list that it claims to be at the index where we found
it.

Change-Id: I6a267da4154a2e7b7d430cb4056e6bae978eaf62
Reviewed-on: https://go-review.googlesource.com/29280
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rick Hudson <rlh@golang.org>
8 years agoruntime: report GCSys and OtherSys in heap profile
Austin Clements [Thu, 25 Aug 2016 15:52:24 +0000 (11:52 -0400)]
runtime: report GCSys and OtherSys in heap profile

The comment block at the end of the heap profile includes *almost*
everything from MemStats. Add the missing fields. These are useful for
debugging RSS that has gone to GC-internal data structures.

Change-Id: I0ee8a918d49629e28fd8fd2bf6861c4529461c24
Reviewed-on: https://go-review.googlesource.com/29276
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rick Hudson <rlh@golang.org>
8 years agocmd/compile: simplify div/mod on ARM
Cherry Zhang [Mon, 19 Sep 2016 11:45:08 +0000 (07:45 -0400)]
cmd/compile: simplify div/mod on ARM

On ARM, DIV, DIVU, MOD, MODU are pseudo instructions that makes
runtime calls _div/_udiv/_mod/_umod, which themselves are wrappers
of udiv. The udiv function does the real thing.

Instead of generating these pseudo instructions, call to udiv
directly. This removes one layer of wrappers (which has an awkward
way of passing argument), and also allows combining DIV and MOD
if both results are needed.

Change-Id: I118afc3986db3a1daabb5c1e6e57430888c91817
Reviewed-on: https://go-review.googlesource.com/29390
Reviewed-by: David Chase <drchase@google.com>
8 years agonet/http/httptrace: fix bad tracing example
Jaana Burcu Dogan [Tue, 20 Sep 2016 03:36:45 +0000 (20:36 -0700)]
net/http/httptrace: fix bad tracing example

Tracing happens at the http.Trace level. Fix the example to demostrate
tracing in the lifecycle of a RoundTrip.

Updates #17152.

Change-Id: Ic7d7bcc550176189206185482e8962dbf1504ff1
Reviewed-on: https://go-review.googlesource.com/29431
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/link: remove more unused ctxt parameters
Michael Hudson-Doyle [Tue, 20 Sep 2016 03:57:53 +0000 (15:57 +1200)]
cmd/link: remove more unused ctxt parameters

This time in elf.go.

Change-Id: Ifaf71742ebbc9aadc8606c39ea2d417ae5cc7e0d
Reviewed-on: https://go-review.googlesource.com/29450
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/link: kill off Symbols.Version
Michael Hudson-Doyle [Tue, 20 Sep 2016 03:46:37 +0000 (15:46 +1200)]
cmd/link: kill off Symbols.Version

Change-Id: Iee8f773355870f2333637a093e51c5fd36e5a6e5
Reviewed-on: https://go-review.googlesource.com/29349
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/link: remove now-unused ctxt arguments from a few functions
Michael Hudson-Doyle [Tue, 20 Sep 2016 03:31:26 +0000 (15:31 +1200)]
cmd/link: remove now-unused ctxt arguments from a few functions

Specifically Addstring, Addbytes and Symgrow.

Change-Id: Ia74093bfcf9f360bf223accbc8feef54a7f059c9
Reviewed-on: https://go-review.googlesource.com/29348
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/link: remove Linklookup & Linkrlookup
Michael Hudson-Doyle [Mon, 19 Sep 2016 00:12:04 +0000 (12:12 +1200)]
cmd/link: remove Linklookup & Linkrlookup

Change-Id: I25d9f74cb52e6fd4f2ad4b1c8b7102efadbc7481
Reviewed-on: https://go-review.googlesource.com/29344
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/link: use ctxt.{Lookup,ROLookup} in favour of function versions of same
Michael Hudson-Doyle [Tue, 20 Sep 2016 03:06:08 +0000 (15:06 +1200)]
cmd/link: use ctxt.{Lookup,ROLookup} in favour of function versions of same

Done with two eg templates:

package p

import (
"cmd/link/internal/ld"
)

func before(ctxt *ld.Link, name string, v int) *ld.Symbol {
return ld.Linklookup(ctxt, name, v)
}
func after(ctxt *ld.Link, name string, v int) *ld.Symbol {
return ctxt.Syms.Lookup(name, v)
}

package p

import (
"cmd/link/internal/ld"
)

func before(ctxt *ld.Link, name string, v int) *ld.Symbol {
return ld.Linkrlookup(ctxt, name, v)
}
func after(ctxt *ld.Link, name string, v int) *ld.Symbol {
return ctxt.Syms.ROLookup(name, v)
}

Change-Id: I00647dbf62294557bd24c29ad1f108fc786335f1
Reviewed-on: https://go-review.googlesource.com/29343
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/link: do not directly embed Symbols in Link
Michael Hudson-Doyle [Tue, 20 Sep 2016 02:59:39 +0000 (14:59 +1200)]
cmd/link: do not directly embed Symbols in Link

Mostly done with sed.

Change-Id: Ic8c534a3fdd332b5420d062ee85bb77a30ad1efb
Reviewed-on: https://go-review.googlesource.com/29346
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/link: split "bag of Symbols" functionality out of Link
Michael Hudson-Doyle [Mon, 19 Sep 2016 00:02:58 +0000 (12:02 +1200)]
cmd/link: split "bag of Symbols" functionality out of Link

Mechanical refactorings to follow.

Change-Id: I9b98e69a58c3cba7c7d1d3e3f600d4ed99d4fce2
Reviewed-on: https://go-review.googlesource.com/29342
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/internal/obj, cmd/link: darwin dynlink support
David Crawshaw [Mon, 19 Sep 2016 18:11:20 +0000 (14:11 -0400)]
cmd/internal/obj, cmd/link: darwin dynlink support

This makes it possible for cmd/compile, when run with -dynlink on
darwin/amd64, to generate TLS_LE relocations which the linker then
turns into the appropriate PC-relative GOT load.

Change-Id: I1a71da432608bdb108ff66c22de600100209c873
Reviewed-on: https://go-review.googlesource.com/29393
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/link: remove Cursym
David Crawshaw [Sat, 17 Sep 2016 14:01:17 +0000 (10:01 -0400)]
cmd/link: remove Cursym

Change-Id: I58253a6cd2d77a9319c0783afb0d92cd5a88a7f7
Reviewed-on: https://go-review.googlesource.com/29370
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
8 years agocmd/link: replace ld.Link.Diag with ld.Errorf
David Crawshaw [Sat, 17 Sep 2016 13:39:33 +0000 (09:39 -0400)]
cmd/link: replace ld.Link.Diag with ld.Errorf

Instead of using ctxt.Cursym, Errorf takes an explicit *Symbol
parameter. This removes most uses of Cursym and means the *Link
context object is needed in fewer parts of the linker.

All transformations done manually, as wiring Cursym is tricky.

Change-Id: Ief88b00b73904224675c0035684c3a84c19249d7
Reviewed-on: https://go-review.googlesource.com/29369
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agodoc: mention KeepAlive & input args change
Keith Randall [Mon, 19 Sep 2016 22:26:48 +0000 (15:26 -0700)]
doc: mention KeepAlive & input args change

Change-Id: Icfb38f492ae71432858b7104fcba18a9ba835192
Reviewed-on: https://go-review.googlesource.com/29410
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/link: move comment somewhere more appropriate
Michael Hudson-Doyle [Sun, 18 Sep 2016 19:13:27 +0000 (07:13 +1200)]
cmd/link: move comment somewhere more appropriate

At least, I assume it's meant to be here. It makes no sense at all where it
currently is.

Change-Id: Ic6a6c112c3dcf1318256d7d602168c3446b55412
Reviewed-on: https://go-review.googlesource.com/29339
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/vet: hard-code program name in usage message
Tormod Erevik Lea [Sat, 17 Sep 2016 17:04:46 +0000 (19:04 +0200)]
cmd/vet: hard-code program name in usage message

Example on linux_amd64 for 'go tool vet -h':

Before:
Usage of /usr/local/go/pkg/tool/linux_amd64/vet:
After:
Usage of vet:

Change-Id: I11cb16b656bd097062d57a8c7441fbe66caaef78
Reviewed-on: https://go-review.googlesource.com/29294
Reviewed-by: Rob Pike <r@golang.org>
8 years agotime: allow long fractions in ParseDuration
Rob Pike [Sun, 18 Sep 2016 04:35:42 +0000 (14:35 +1000)]
time: allow long fractions in ParseDuration

The code scanned for an integer after a decimal point, which
meant things could overflow if the number was very precise
(0.1234123412341234123412342134s). This fix changes the
parser to stop adding precision once we run out of bits, rather
than trigger an erroneous overflow.

We could parse durations using floating-point arithmetic,
but since the type is int64 and float64 has only has 53 bits
of precision, that would be imprecise.

Fixes #15011.

Change-Id: If85e22b8f6cef12475e221169bb8f493bb9eb590
Reviewed-on: https://go-review.googlesource.com/29338
Reviewed-by: Costin Chirvasuta <costinc@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile: intrinsify Ctz{32,64} and Bswap{32,64} on s390x
Michael Munday [Sat, 17 Sep 2016 01:42:18 +0000 (21:42 -0400)]
cmd/compile: intrinsify Ctz{32,64} and Bswap{32,64} on s390x

Also adds the 'find leftmost one' instruction (FLOGR) and replaces the
WORD-encoded use of FLOGR in math/big with it.

Change-Id: I18e7cd19e75b8501a6ae8bd925471f7e37ded206
Reviewed-on: https://go-review.googlesource.com/29372
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Michael Munday <munday@ca.ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/asm, cmd/internal/obj/ppc64: add ppc64 vector registers and instructions
Carlos Eduardo Seo [Tue, 12 Apr 2016 21:38:00 +0000 (18:38 -0300)]
cmd/asm, cmd/internal/obj/ppc64: add ppc64 vector registers and instructions

The current implementation for Power architecture does not include the vector
(Altivec) registers.  This adds the 32 VMX registers and the most commonly used
instructions: X-form loads/stores; VX-form logical operations, add/sub,
rotate/shift, count, splat, SHA Sigma and AES cipher; VC-form compare; and
VA-form permute, shift, add/sub and select.

Fixes #15619

Change-Id: I544b990631726e8fdfcce8ecca0aeeb72faae9aa
Reviewed-on: https://go-review.googlesource.com/25600
Run-TryBot: David Chase <drchase@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com>
Reviewed-by: David Chase <drchase@google.com>
8 years agocrypto/md5, crypto/sha1, crypto/sha256: add examples for checksumming a file
Emmanuel Odeke [Sun, 18 Sep 2016 23:51:02 +0000 (16:51 -0700)]
crypto/md5, crypto/sha1, crypto/sha256: add examples for checksumming a file

Updates #16360.

Change-Id: I75714d2b5f095fe39fd81edfa6dd9e44d7c44da1
Reviewed-on: https://go-review.googlesource.com/29375
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/compile: args no longer live until end-of-function
Keith Randall [Wed, 31 Aug 2016 22:17:02 +0000 (15:17 -0700)]
cmd/compile: args no longer live until end-of-function

We're dropping this behavior in favor of runtime.KeepAlive.
Implement runtime.KeepAlive as an intrinsic.

Update #15843

Change-Id: Ib60225bd30d6770ece1c3c7d1339a06aa25b1cbc
Reviewed-on: https://go-review.googlesource.com/28310
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
8 years agonet/http: rename Post's parameter from bodyType to contentType
Brady Sullivan [Fri, 16 Sep 2016 22:25:07 +0000 (15:25 -0700)]
net/http: rename Post's parameter from bodyType to contentType

Change-Id: Ie1b08215c02ce3ec72a4752f4b800f23345ff99d
Reviewed-on: https://go-review.googlesource.com/29362
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/compile: cache CFG-dependent computations
Keith Randall [Fri, 16 Sep 2016 20:50:18 +0000 (13:50 -0700)]
cmd/compile: cache CFG-dependent computations

We compute a lot of stuff based off the CFG: postorder traversal,
dominators, dominator tree, loop nest.  Multiple phases use this
information and we end up recomputing some of it.  Add a cache
for this information so if the CFG hasn't changed, we can reuse
the previous computation.

Change-Id: I9b5b58af06830bd120afbee9cfab395a0a2f74b2
Reviewed-on: https://go-review.googlesource.com/29356
Reviewed-by: David Chase <drchase@google.com>
8 years agocmd/compile: fold ADDconsts together for PPC
Keith Randall [Fri, 16 Sep 2016 19:08:05 +0000 (12:08 -0700)]
cmd/compile: fold ADDconsts together for PPC

Change-Id: I571f03af6f791e78e7e18addcc310eb25747cdcf
Reviewed-on: https://go-review.googlesource.com/29351
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: David Chase <drchase@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile: inline convT2{I,E} when result doesn't escape
Keith Randall [Sat, 17 Sep 2016 22:04:36 +0000 (15:04 -0700)]
cmd/compile: inline convT2{I,E} when result doesn't escape

No point in calling a function when we can build the interface
using a known type (or itab) and the address of a local.

Get rid of third arg (preallocated stack space) to convT2{I,E}.

Makes go binary smaller by 0.2%

benchmark                   old ns/op     new ns/op     delta
BenchmarkEfaceInteger-8     16.7          10.1          -39.52%

Update #17118
Update #15375

Change-Id: I9724a1f802bfa1e3957bf1856b55558278e198a2
Reviewed-on: https://go-review.googlesource.com/29373
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/vet: fix documentation for -structtags
Rob Pike [Mon, 19 Sep 2016 01:22:52 +0000 (11:22 +1000)]
cmd/vet: fix documentation for -structtags

Was missing a title in the documentation, so it formatted wrong.

Fixes #17124

Change-Id: Ie8a9c36fbc54eed7d8a761f89a088e582b8c062d
Reviewed-on: https://go-review.googlesource.com/29340
Reviewed-by: Andrew Gerrand <adg@golang.org>
8 years agocmd/link: remove size and version from genasmsym's argument
Michael Hudson-Doyle [Fri, 16 Sep 2016 04:47:28 +0000 (16:47 +1200)]
cmd/link: remove size and version from genasmsym's argument

They are trivially available in the few places they are needed.

Change-Id: I6544692e9027076ec9e6e9a295c66457039e55e1
Reviewed-on: https://go-review.googlesource.com/29332
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/link: give names and a type to the symbol types used by genasmsym
Michael Hudson-Doyle [Fri, 16 Sep 2016 04:22:08 +0000 (16:22 +1200)]
cmd/link: give names and a type to the symbol types used by genasmsym

Doing this revealed some dead code.

Change-Id: I5202fcc3f73e3dfddfea3ec7b772e16da51195da
Reviewed-on: https://go-review.googlesource.com/29331
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/dist: fix internal linking check for mips64le
Cherry Zhang [Sun, 18 Sep 2016 19:28:41 +0000 (15:28 -0400)]
cmd/dist: fix internal linking check for mips64le

Fix mips64le build.

Change-Id: Icf1b4901655463f582b49054a88edfb06ad6c676
Reviewed-on: https://go-review.googlesource.com/29281
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
8 years agocmd/compile: intrinsify runtime/internal/atomic.Xaddint64
Cherry Zhang [Thu, 15 Sep 2016 23:50:59 +0000 (19:50 -0400)]
cmd/compile: intrinsify runtime/internal/atomic.Xaddint64

This aliases to Xadd64.

Change-Id: I95d49e1d03eecc242e9e6fd4b2742b1c1a1d5ade
Reviewed-on: https://go-review.googlesource.com/29274
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
8 years agoplugin: cast dlerror return value for android
David Crawshaw [Fri, 16 Sep 2016 19:08:17 +0000 (15:08 -0400)]
plugin: cast dlerror return value for android

Until a few weeks ago, bionic, the Andoid libc, incorrectly
returned const char* (instead of char*) from dlerror(3).

https://android.googlesource.com/platform/bionic/+/5e071a18ce88d93fcffaebb9e0f62524ae504908

Change-Id: I30d33240c63a9f35b6c20ca7e3928ad33bc5e33f
Reviewed-on: https://go-review.googlesource.com/29352
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/compile: fix format verbs in ssa package
Keith Randall [Fri, 16 Sep 2016 23:56:29 +0000 (16:56 -0700)]
cmd/compile: fix format verbs in ssa package

%s is no longer valid.  Use %v instead.

Change-Id: I5ec4fa6a9280082c1a0c75fd1cf94b4bb8096f5c
Reviewed-on: https://go-review.googlesource.com/29365
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/internal/obj: remove ACHECKNIL
Matthew Dempsky [Sat, 17 Sep 2016 02:19:42 +0000 (19:19 -0700)]
cmd/internal/obj: remove ACHECKNIL

Updates #16357.

Change-Id: I35f938d675ca5c31f65c4419ee0732bbc593b5cb
Reviewed-on: https://go-review.googlesource.com/29368
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Dave Cheney <dave@cheney.net>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/internal/obj: simplify Plists
Matthew Dempsky [Sat, 17 Sep 2016 01:31:25 +0000 (18:31 -0700)]
cmd/internal/obj: simplify Plists

Keep Plists in a slice instead of a linked list.
Eliminate unnecessary fields.
Also, while here remove gc's unused breakpc and continpc vars.

Change-Id: Ia04264036c0442843869965d247ccf68a5295115
Reviewed-on: https://go-review.googlesource.com/29367
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dave Cheney <dave@cheney.net>
8 years agocmd/compile: fix compiler bug for constant equality comparison
Trey Lawrence [Tue, 23 Aug 2016 20:43:43 +0000 (16:43 -0400)]
cmd/compile: fix compiler bug for constant equality comparison

The compiler incorrectly will error when comparing a nil pointer
interface to a nil pointer of any other type. Example:
(*int)(nil) == interface{}(nil)
Will error with "gc: illegal constant expression: *int == interface {}"

Fixes #16702

Change-Id: I1a15d651df2cfca6762b1783a28b377b2e6ff8c6
Reviewed-on: https://go-review.googlesource.com/27591
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/internal/obj: replace AGLOBL with (*Link).Globl
Matthew Dempsky [Fri, 16 Sep 2016 22:31:04 +0000 (15:31 -0700)]
cmd/internal/obj: replace AGLOBL with (*Link).Globl

Replace the AGLOBL pseudo-op with a method to directly register an
LSym as a global. Similar to how we previously already replaced the
ADATA pseudo-op with directly writing out data bytes.

Passes toolstash -cmp.

Change-Id: I3631af0a2ab5798152d0c26b833dc309dbec5772
Reviewed-on: https://go-review.googlesource.com/29366
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Dave Cheney <dave@cheney.net>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agonet: respect resolv.conf rotate option
Dan Peterson [Thu, 15 Sep 2016 20:24:42 +0000 (17:24 -0300)]
net: respect resolv.conf rotate option

Instead of ranging over servers in the config, grab an offset
from the config that is used to determine indices.

When the rotate option is enabled, the offset increases which
rotates queries through servers. Otherwise, it is always 0
which uses servers in config order.

Fixes #17126

Change-Id: If233f6de7bfa42f88570055b9ab631be08a76b3e
Reviewed-on: https://go-review.googlesource.com/29233
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agosort: fix search descending order example
Suyash [Fri, 16 Sep 2016 14:24:44 +0000 (19:54 +0530)]
sort: fix search descending order example

Change-Id: I27b82d8c63a06ddf7e148b15853aba24a22a6282
Reviewed-on: https://go-review.googlesource.com/29336
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/dist: disable plugin test on arm64
David Crawshaw [Fri, 16 Sep 2016 22:53:46 +0000 (18:53 -0400)]
cmd/dist: disable plugin test on arm64

Mysterious error and no time or easy machine access to investigate
now, so disabling the -buildmode=plugin test on arm64. (The arm
version is working as expected.)

Updates #17138

Change-Id: I4cc56ddf47e7597213462e48d4934a765168bd07
Reviewed-on: https://go-review.googlesource.com/29363
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/dist: unify internal linking checks
David Crawshaw [Fri, 16 Sep 2016 22:25:52 +0000 (18:25 -0400)]
cmd/dist: unify internal linking checks

I missed one in CL 29360.

Change-Id: I29fc6dcd920829a918c70734d646119133a0a9df
Reviewed-on: https://go-review.googlesource.com/29361
Reviewed-by: Keith Randall <khr@golang.org>
8 years agocmd/dist: skip libgcc test on arm64 and mips64
David Crawshaw [Fri, 16 Sep 2016 21:15:12 +0000 (17:15 -0400)]
cmd/dist: skip libgcc test on arm64 and mips64

This test was always being run with external linking on these
platforms because the linker was silently forcing external linking
until CL 28971. Now it produces an error instead.

Change-Id: I794e0812711e05b150daf805dc3451507bb4cae8
Reviewed-on: https://go-review.googlesource.com/29360
Run-TryBot: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/dist: disable plugin test on ppc64le and s390x
David Crawshaw [Fri, 16 Sep 2016 21:10:44 +0000 (17:10 -0400)]
cmd/dist: disable plugin test on ppc64le and s390x

These are close to working, but untested and failing on
build.golang.org. So disable for now.

Change-Id: I330b8d1a91f0bf5139c894913868f01ec87e986d
Reviewed-on: https://go-review.googlesource.com/29359
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile: remove Arch.REGCTXT
Matthew Dempsky [Fri, 16 Sep 2016 21:08:10 +0000 (14:08 -0700)]
cmd/compile: remove Arch.REGCTXT

Update #16357.

Change-Id: I507676212d7137a62c76de7bfa0ba8dbd68e840f
Reviewed-on: https://go-review.googlesource.com/29358
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Dave Cheney <dave@cheney.net>
8 years agocmd/link: remove never-set Windows variable
David Crawshaw [Fri, 16 Sep 2016 19:24:56 +0000 (15:24 -0400)]
cmd/link: remove never-set Windows variable

Change-Id: I3d64549b85b71bb63bcc815ce2276af6ca2eb215
Reviewed-on: https://go-review.googlesource.com/29354
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile: change goarch.Main into goarch.Init
Matthew Dempsky [Fri, 16 Sep 2016 20:56:39 +0000 (13:56 -0700)]
cmd/compile: change goarch.Main into goarch.Init

Similar idea to golang.org/cl/28970.

Change-Id: I9d2feb1a669d71ffda1d612cf39ee0d3c08d22d2
Reviewed-on: https://go-review.googlesource.com/29357
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile/internal/syntax: support for alias declarations
Robert Griesemer [Fri, 16 Sep 2016 00:40:26 +0000 (17:40 -0700)]
cmd/compile/internal/syntax: support for alias declarations

Permits parsing of alias declarations with -newparser

const/type/var/func T => p.T

but the compiler will reject it with an error. For now this
also accepts

type T = p.T

so we can experiment with a type-alias only scenario.

- renamed _Arrow token to _Larrow (<-)
- introduced _Rarrow token (=>)
- introduced AliasDecl node
- extended scanner to accept _Rarrow
- extended parser and printer to handle alias declarations

Change-Id: I0170d10a87df8255db9186d466b6fd405228c38e
Reviewed-on: https://go-review.googlesource.com/29355
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/link: skip arch-specific main function
David Crawshaw [Fri, 9 Sep 2016 16:04:22 +0000 (12:04 -0400)]
cmd/link: skip arch-specific main function

Add some notes to main.go on what happens where.

Change-Id: I4fb0b6c280e5f990ddc5d749267372b86870af6d
Reviewed-on: https://go-review.googlesource.com/28970
TryBot-Result: Gobot Gobot <gobot@golang.org>
Run-TryBot: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/compile: turn live variable test off for ppc
Keith Randall [Fri, 16 Sep 2016 19:11:33 +0000 (12:11 -0700)]
cmd/compile: turn live variable test off for ppc

ppc64 has an extraneous variable live in some situations.
We need a better tighten pass to get rid of this extra variable.
I'm working on it, but fix the test in the meantime.

Fixes build for ppc64.

Change-Id: I1efb9ccb234a64f2a1c228abd2b3195f67fbeb41
Reviewed-on: https://go-review.googlesource.com/29353
Reviewed-by: David Chase <drchase@google.com>
8 years agocmd/compile: remove unused Label fields
Matthew Dempsky [Fri, 16 Sep 2016 18:26:41 +0000 (11:26 -0700)]
cmd/compile: remove unused Label fields

Updates #16357.

Change-Id: I37f04d83134b5e1e7f6ba44eb9a566758ef594d3
Reviewed-on: https://go-review.googlesource.com/29350
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/compile: reorganize SSA register numbering
Keith Randall [Fri, 16 Sep 2016 16:36:00 +0000 (09:36 -0700)]
cmd/compile: reorganize SSA register numbering

Teach SSA about the cmd/internal/obj/$ARCH register numbering.
It can then return that numbering when requested.  Each architecture
now does not need to know anything about the internal SSA numbering
of registers.

Change-Id: I34472a2736227c15482e60994eebcdd2723fa52d
Reviewed-on: https://go-review.googlesource.com/29249
Reviewed-by: David Chase <drchase@google.com>
8 years agocmd/link: give RelocVariant a type, document Reloc
David Crawshaw [Fri, 16 Sep 2016 15:35:53 +0000 (11:35 -0400)]
cmd/link: give RelocVariant a type, document Reloc

Change-Id: Ib20263405a08674b5e160295fc965da4c8b54b34
Reviewed-on: https://go-review.googlesource.com/29248
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/link: attempt to rationalize linkmode init
David Crawshaw [Fri, 9 Sep 2016 21:34:07 +0000 (17:34 -0400)]
cmd/link: attempt to rationalize linkmode init

This CL gives Linkmode a type, switches it to the standard flag
handling mechanism, and deduplicates some logic.

There is a semantic change in this CL. Previously if a link was
invoked explicitly with -linkmode=internal, any condition that forced
external linking would silently override this and use external
linking. Instead it now fails with a reason why. I believe this is an
improvement, but will change it back if there's disagreement.

Fixes #12848

Change-Id: Ic80e341fff65ecfdd2b6fdd6079674cc7210fc5f
Reviewed-on: https://go-review.googlesource.com/28971
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agomisc/cgo/testplugin: add test of -buildmode=plugin
David Crawshaw [Fri, 26 Aug 2016 13:04:27 +0000 (09:04 -0400)]
misc/cgo/testplugin: add test of -buildmode=plugin

Change-Id: Ie9fea9814c850b084562ab2349b54d9ad9fa1f4a
Reviewed-on: https://go-review.googlesource.com/27825
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/go: support -buildmode=plugin on linux
David Crawshaw [Fri, 26 Aug 2016 12:51:58 +0000 (08:51 -0400)]
cmd/go: support -buildmode=plugin on linux

Change-Id: I0c8a04457db28c55c35c9a186b63c40f40730e39
Reviewed-on: https://go-review.googlesource.com/27824
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agoplugin: new package for loading plugins
David Crawshaw [Fri, 26 Aug 2016 12:50:50 +0000 (08:50 -0400)]
plugin: new package for loading plugins

Includes a linux implementation.

Change-Id: Iacc2ed7da760ae9deebc928adf2b334b043b07ec
Reviewed-on: https://go-review.googlesource.com/27823
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/compile: elide unnecessary sign/zeroExt, PPC64
David Chase [Thu, 15 Sep 2016 22:14:32 +0000 (15:14 -0700)]
cmd/compile: elide unnecessary sign/zeroExt, PPC64

Bias {Eq,Neq}{8,16} to prefer the extension likely to match
their operand's load (if loaded), and elide sign and zero
extending MOV{B,W}, MOV{B,W}Z when their operands are already
appropriately extended.

Change-Id: Ic01b9cab55e170f68fc2369688b50ce78a818608
Reviewed-on: https://go-review.googlesource.com/29236
Run-TryBot: David Chase <drchase@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
8 years agocmd/compile: label LoadReg with line number of the use
Cherry Zhang [Wed, 20 Jul 2016 14:09:40 +0000 (10:09 -0400)]
cmd/compile: label LoadReg with line number of the use

A tentative fix of #16380. It adds "line" everywhere...

This also reduces binary size slightly (cmd/go on ARM as an example):

before after
total binary size 8068097 8018945 (-0.6%)
.gopclntab 1195341 1179929 (-1.3%)
.debug_line  689692  652017 (-5.5%)

Change-Id: Ibda657c6999783c5bac180cbbba487006dbf0ed7
Reviewed-on: https://go-review.googlesource.com/25082
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile: enable rewritings that are blocked by old backends
Cherry Zhang [Fri, 16 Sep 2016 13:27:06 +0000 (09:27 -0400)]
cmd/compile: enable rewritings that are blocked by old backends

Old backends did not implement them, but SSA do.

Change-Id: I543b2281dcf4bab0da37c9b1f26a5ef55a0ea11b
Reviewed-on: https://go-review.googlesource.com/29278
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
8 years agoruntime: avoid dependence on main symbol
David Crawshaw [Fri, 26 Aug 2016 02:04:04 +0000 (22:04 -0400)]
runtime: avoid dependence on main symbol

For -buildmode=plugin, this lets the linker drop the main.main symbol
out of the binary while including most of the runtime.

(In the future it should be possible to drop the entire runtime
package from plugins.)

Change-Id: I3e7a024ddf5cc945e3d8b84bf37a0b7cb2a00eb6
Reviewed-on: https://go-review.googlesource.com/27821
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/link: -buildmode=plugin support for linux
David Crawshaw [Fri, 26 Aug 2016 01:58:45 +0000 (21:58 -0400)]
cmd/link: -buildmode=plugin support for linux

This CL contains several linker changes to support creating plugins.

It collects the exported plugin symbols provided by the compiler and
includes them in the moduledata.

It treats a binary as being dynamically linked if it imports the plugin
package. This lets the dynamic linker de-duplicate symbols.

Change-Id: I099b6f38dda26306eba5c41dbe7862f5a5918d95
Reviewed-on: https://go-review.googlesource.com/27820
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agosort: add examples for sort.Search
Suyash [Wed, 14 Sep 2016 17:06:58 +0000 (22:36 +0530)]
sort: add examples for sort.Search

This adds examples showing the different ways of using sort.Search.

Change-Id: Iaa08b4501691f37908317fdcf2e618fbe9f99ade
Reviewed-on: https://go-review.googlesource.com/29131
Reviewed-by: Andrew Gerrand <adg@golang.org>
Run-TryBot: Andrew Gerrand <adg@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile: remove unused cases in Naddr
Matthew Dempsky [Fri, 16 Sep 2016 02:48:53 +0000 (19:48 -0700)]
cmd/compile: remove unused cases in Naddr

Gins, and in turn Naddr, is only used with ONAME and OLITERAL Nodes,
so we can drastically simplify Naddr.

Passes toolstash/buildall.

Change-Id: I2deb7eb771fd55e7c7f00040a9aee54588fcac11
Reviewed-on: https://go-review.googlesource.com/29247
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dave Cheney <dave@cheney.net>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agoos/exec: add examples for CombinedOutput, StdinPipe, StderrPipe
Emmanuel Odeke [Wed, 14 Sep 2016 09:11:02 +0000 (02:11 -0700)]
os/exec: add examples for CombinedOutput, StdinPipe, StderrPipe

Updates #16360.

Adds examples for:
+ CombinedOutput
+ StdinPipe
+ StderrPipe

Change-Id: I19293e64b34ed9268da00e0519173a73bfbc2c10
Reviewed-on: https://go-review.googlesource.com/29150
Run-TryBot: Andrew Gerrand <adg@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Andrew Gerrand <adg@golang.org>
8 years agocmd/internal/obj: remove Addr.Etype and Addr.Width
Matthew Dempsky [Fri, 16 Sep 2016 02:00:05 +0000 (19:00 -0700)]
cmd/internal/obj: remove Addr.Etype and Addr.Width

Since the legacy backends were removed, these fields are write-only.

Change-Id: I4816c39267b7c10a4da2a6d22cd367dc475e564d
Reviewed-on: https://go-review.googlesource.com/29246
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
Reviewed-by: Dave Cheney <dave@cheney.net>
8 years agocmd/compile/internal/gc: make Nod private
Dave Cheney [Fri, 16 Sep 2016 01:00:54 +0000 (11:00 +1000)]
cmd/compile/internal/gc: make Nod private

Follow up to CL 29134. Generated with gofmt -r 'Nod -> nod', plus
three manual adjustments to the comments in syntax/parser.go

Change-Id: I02920f7ab10c70b6e850457b42d5fe35f1f3821a
Reviewed-on: https://go-review.googlesource.com/29136
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/link: fix number-of-files entry in gopclntab
Cherry Zhang [Thu, 15 Sep 2016 23:52:40 +0000 (19:52 -0400)]
cmd/link: fix number-of-files entry in gopclntab

According to golang.org/s/go12symtab, for N files, it should put N+1
there.

Fixes #17132.

Change-Id: I0c84136855c6436be72b9d3c407bf10d4c81a099
Reviewed-on: https://go-review.googlesource.com/29275
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
8 years agocmd/compile: remove Betypeinit
Matthew Dempsky [Thu, 15 Sep 2016 23:37:17 +0000 (16:37 -0700)]
cmd/compile: remove Betypeinit

Change-Id: I5c2fd0ff1b49f3826f2b9869b0b11329804b0e2a
Reviewed-on: https://go-review.googlesource.com/29244
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dave Cheney <dave@cheney.net>
8 years agocmd/compile: remove traces of old register allocator
Matthew Dempsky [Thu, 15 Sep 2016 23:33:11 +0000 (16:33 -0700)]
cmd/compile: remove traces of old register allocator

Only added lines are moving amd64 and x86's ginsnop functions from
gsubr.go to ggen.go to match other architectures, so all of the
gsubr.go files can go away.

Change-Id: Ib2292460c155ae6d9dcf5c9801f178031d8eea7a
Reviewed-on: https://go-review.googlesource.com/29240
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dave Cheney <dave@cheney.net>
8 years agocmd/compile: remove more dead code
Matthew Dempsky [Thu, 15 Sep 2016 23:21:56 +0000 (16:21 -0700)]
cmd/compile: remove more dead code

Change-Id: I0131b0d7421ff1397f16a08eff758250abbdf8e2
Reviewed-on: https://go-review.googlesource.com/29239
Reviewed-by: Dave Cheney <dave@cheney.net>
8 years agodoc: change variable name in Effective Go
Vitor De Mario [Thu, 15 Sep 2016 23:46:20 +0000 (20:46 -0300)]
doc: change variable name in Effective Go

Effective Go has references to a function call f(c, req) made by ServeHTTP mixed with f(w,
req). c is dropped in favor of w to maintain consistency

Fixes #17128

Change-Id: I6746fd115ed5a58971fd24e54024d29d18ead1fa
Reviewed-on: https://go-review.googlesource.com/29311
Reviewed-by: Rob Pike <r@golang.org>
8 years agonet: document dummy byte in ReadMsgUnix and WriteMsgUnix
Alberto Bertogli [Thu, 15 Sep 2016 01:32:44 +0000 (02:32 +0100)]
net: document dummy byte in ReadMsgUnix and WriteMsgUnix

ReadMsgUnix and WriteMsgUnix both will read/write 1 byte from/to the
socket if they were given no buffer to read/write, to avoid a common
pitfall in out of band operations (they will usually block
indefinitely if there's no actual data to read).

This patch adds a note about this behaviour in their documentation, so
users can be aware of it.

Change-Id: I751f0e12bb4d80311e94ea8de023595c5d40ec3e
Reviewed-on: https://go-review.googlesource.com/29180
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/compile: adapt GOSSAHASH to set a DebugTest flag in ssa.Config
David Chase [Thu, 15 Sep 2016 20:51:35 +0000 (16:51 -0400)]
cmd/compile: adapt GOSSAHASH to set a DebugTest flag in ssa.Config

Binary search remains our friend.
Suppose you add an ought-to-be-benign pattern to PPC64.rules,
and make.bash starts crashing.  You can guard the pattern(s)
with config.DebugTest:

(Eq8 x y) && config.DebugTest && isSigned(x.Type) &&
   isSigned(y.Type) ->
   (Equal (CMPW (SignExt8to32 x) (SignExt8to32 y)))

and then

  gossahash -s ./make.bash
  ...
  (go drink beer while silicon minions toil)
  ...
  Trying ./make.bash args=[], env=[GOSSAHASH=100110010111110]
  ./make.bash failed (1 distinct triggers): exit status 1
  Trigger string is 'GOSSAHASH triggered (*importReader).readByte',
    repeated 1 times
  Review GSHS_LAST_FAIL.0.log for failing run
  Finished with GOSSAHASH=100110010111110

Change-Id: I4eff46ebaf496baa2acedd32e217005cb3ac1c62
Reviewed-on: https://go-review.googlesource.com/29273
Run-TryBot: David Chase <drchase@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
8 years agotest,cmd/compile: remove _ssa file suffix
Keith Randall [Thu, 15 Sep 2016 20:29:17 +0000 (13:29 -0700)]
test,cmd/compile: remove _ssa file suffix

Everything is SSA now.

Update #16357

Change-Id: I436dbe367b863ee81a3695a7d653ba4bfc5b0f6c
Reviewed-on: https://go-review.googlesource.com/29232
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agotest: make SSA tests unconditional
Keith Randall [Thu, 15 Sep 2016 20:04:50 +0000 (13:04 -0700)]
test: make SSA tests unconditional

Delete legacy backend tests, make SSA tests unconditional.

Next CL will remove _ssa from the file names.

Update #16357

Change-Id: I2a7f5dcbc69455f63b5e6e6b2725df26ab86c8dd
Reviewed-on: https://go-review.googlesource.com/29231
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/fix: add golang.org/x/net/context fix
Sam Whited [Fri, 9 Sep 2016 14:49:47 +0000 (09:49 -0500)]
cmd/fix: add golang.org/x/net/context fix

Fixes #17040

Change-Id: I3682cc0367b919084c280d7dc64746495c1d4aaa
Reviewed-on: https://go-review.googlesource.com/28872
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/go: add distribution-specific info for Linux to bug command
Mohit Agarwal [Wed, 7 Sep 2016 04:06:58 +0000 (09:36 +0530)]
cmd/go: add distribution-specific info for Linux to bug command

Also remove the hard-coded path for getting glibc information.

As an example, the following is the diff for `go bug` on Ubuntu before
and after the change:

>>>
--- /tmp/01     2016-09-13 15:08:53.202758043 +0530
+++ /tmp/02     2016-09-13 21:38:17.485039867 +0530
@@ -1,7 +1,7 @@
 Please check whether the issue also reproduces on the latest release, go1.7.1.

 ```
-go version devel +bdb3b79 Wed Sep 7 03:23:44 2016 +0000 linux/amd64
+go version devel +cb13150 Wed Sep 7 09:46:58 2016 +0530 linux/amd64
 GOARCH="amd64"
 GOBIN=""
 GOEXE=""
@@ -18,5 +18,23 @@
 CXX="g++"
 CGO_ENABLED="1"
 uname -sr: Linux 4.4.0-36-generic
+Distributor ID:        Ubuntu
+Description:   Ubuntu 16.04.1 LTS
+Release:       16.04
+Codename:      xenial
+/lib/x86_64-linux-gnu/libc.so.6: GNU C Library (Ubuntu GLIBC 2.23-0ubuntu3) stable release version 2.23, by Roland McGrath et al.
 gdb --version: GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1
 ```
<<<

Change-Id: I7e3730a797af0f94d6e43fe4743ab48bc0f11f1b
Reviewed-on: https://go-review.googlesource.com/28581
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/compile: repair GOSSAFUNC functionality
David Chase [Thu, 15 Sep 2016 16:43:29 +0000 (12:43 -0400)]
cmd/compile: repair GOSSAFUNC functionality

GOSSAFUNC=foo had previously only done printing for the
single function foo, and didn't quite clean up after itself
properly. Changes ensures that Config.HTML != nil iff
GOSSAFUNC==name-of-current-function.

Change-Id: I255e2902dfc64f715d93225f0d29d9525c06f764
Reviewed-on: https://go-review.googlesource.com/29250
Run-TryBot: David Chase <drchase@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile: remove gins
Josh Bleecher Snyder [Thu, 15 Sep 2016 15:07:54 +0000 (08:07 -0700)]
cmd/compile: remove gins

The only remaining consumers of gins were
ginsnop and arch-independent opcodes like GVARDEF.
Rewrite ginsnop to create and populate progs directly.
Move arch-independent opcodes to package gc
and simplify.
Delete some now unused code.
There is more.
Step one towards eliminating gc.Node.Reg.

Change-Id: I7c34cd8a848f6fc3b030705ab8e293838e0b6c20
Reviewed-on: https://go-review.googlesource.com/29220
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/compile: nodintconst is the new Nodintconst
Josh Bleecher Snyder [Thu, 15 Sep 2016 15:46:08 +0000 (08:46 -0700)]
cmd/compile: nodintconst is the new Nodintconst

Fixes the build.

Change-Id: Ib9aca6cf86d595d20f22dbf730afa8dea4b44672
Reviewed-on: https://go-review.googlesource.com/29221
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
8 years agocmd/compile: unroll comparisons to short constant strings
Josh Bleecher Snyder [Sat, 25 Jun 2016 20:40:43 +0000 (13:40 -0700)]
cmd/compile: unroll comparisons to short constant strings

Unroll s == "ab" to

len(s) == 2 && s[0] == 'a' && s[1] == 'b'

This generates faster and shorter code
by avoiding a runtime call.
Do something similar for !=.

The cutoff length is 6. This was chosen empirically
by examining binary sizes on arm, arm64, 386, and amd64
using the SSA backend.

For all architectures examined, 4, 5, and 6 were
the ideal cutoff, with identical binary sizes.

The distribution of constant string equality sizes
during 'go build -a std' is:

 40.81%   622 len 0
 14.11%   215 len 4
  9.45%   144 len 1
  7.81%   119 len 3
  7.48%   114 len 5
  5.12%    78 len 7
  4.13%    63 len 2
  3.54%    54 len 8
  2.69%    41 len 6
  1.18%    18 len 10
  0.85%    13 len 9
  0.66%    10 len 14
  0.59%     9 len 17
  0.46%     7 len 11
  0.26%     4 len 12
  0.20%     3 len 19
  0.13%     2 len 13
  0.13%     2 len 15
  0.13%     2 len 16
  0.07%     1 len 20
  0.07%     1 len 23
  0.07%     1 len 33
  0.07%     1 len 36

A cutoff of length 6 covers most of the cases.

Benchmarks on amd64 comparing a string to a constant of length 3:

Cmp/1same-8           4.78ns ± 6%  0.94ns ± 9%  -80.26%  (p=0.000 n=20+20)
Cmp/1diffbytes-8      6.43ns ± 6%  0.96ns ±11%  -85.13%  (p=0.000 n=20+20)
Cmp/3same-8           4.71ns ± 5%  1.28ns ± 5%  -72.90%  (p=0.000 n=20+20)
Cmp/3difffirstbyte-8  6.33ns ± 7%  1.27ns ± 7%  -79.90%  (p=0.000 n=20+20)
Cmp/3difflastbyte-8   6.34ns ± 8%  1.26ns ± 9%  -80.13%  (p=0.000 n=20+20)

The change to the prove test preserves the
existing intent of the test. When the string was
short, there was a new "proved in bounds" report
that referred to individual byte comparisons.

Change-Id: I593ac303b0d11f275672090c5c786ea0c6b8da13
Reviewed-on: https://go-review.googlesource.com/26758
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/compile/internal/gc: unexport private variables
Dave Cheney [Thu, 15 Sep 2016 14:33:29 +0000 (00:33 +1000)]
cmd/compile/internal/gc: unexport private variables

Change-Id: I14a7c08105e6bdcee04a5cc21d7932e9ca753384
Reviewed-on: https://go-review.googlesource.com/29138
Run-TryBot: Dave Cheney <dave@cheney.net>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile/internal/gc: fix build
Dave Cheney [Thu, 15 Sep 2016 14:17:33 +0000 (00:17 +1000)]
cmd/compile/internal/gc: fix build

Fix conflict between CL 29213 and 29134.

Change-Id: Ie58bd7195893d7e634f1b257ee0bdd3250cd23c2
Reviewed-on: https://go-review.googlesource.com/29137
TryBot-Result: Gobot Gobot <gobot@golang.org>
Run-TryBot: Dave Cheney <dave@cheney.net>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
8 years agocmd/compile: unwrap fewer CONVNOPs in staticassign
Josh Bleecher Snyder [Thu, 15 Sep 2016 03:07:13 +0000 (20:07 -0700)]
cmd/compile: unwrap fewer CONVNOPs in staticassign

staticassign unwraps all CONVNOPs.
However, in the included test, we need the
CONVNOP for everything to typecheck.
Stop unwrapping unnecessarily.

The code we generate for this example is
suboptimal, but that's not new; see #17113.

Fixes #17111.

Change-Id: I29532787a074a6fe19a5cc53271eb9c84bf1b576
Reviewed-on: https://go-review.googlesource.com/29213
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/compile/internal/gc: unexport more helper functions
Dave Cheney [Thu, 15 Sep 2016 05:45:10 +0000 (15:45 +1000)]
cmd/compile/internal/gc: unexport more helper functions

After the removal of the old backend many types are no longer referenced
outside internal/gc. Make these functions private so that tools like
honnef.co/go/unused can spot when they become dead code. In doing so
this CL identified several previously public helpers which are no longer
used, so removes them.

This should be the last of the public functions.

Change-Id: I7e9c4e72f86f391b428b9dddb6f0d516529706c3
Reviewed-on: https://go-review.googlesource.com/29134
Run-TryBot: Dave Cheney <dave@cheney.net>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/go: make bug subcommand open the browser
Josh Bleecher Snyder [Wed, 14 Sep 2016 21:51:41 +0000 (14:51 -0700)]
cmd/go: make bug subcommand open the browser

Instead of dumping information for the use
to copy/paste into the issue tracker,
open the issue tracker directly with a pre-filled
template.

Change-Id: I370d0063b609200497014ccda35244fa4314a662
Reviewed-on: https://go-review.googlesource.com/29210
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Robert Griesemer <gri@golang.org>
Reviewed-by: Minux Ma <minux@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>