]> Cypherpunks repositories - gostls13.git/log
gostls13.git
8 years agocmd/compile: fix noopt build
Keith Randall [Sun, 28 Aug 2016 18:17:37 +0000 (11:17 -0700)]
cmd/compile: fix noopt build

Atomic add rules were depending on CSE to combine duplicate atomic ops.
With -N, CSE doesn't run.

Redo the rules for atomic add so there's only one atomic op.
Introduce an add-to-first-part-of-tuple pseudo-ops to make the atomic add result correct.

Change-Id: Ib132247051abe5f80fefad6c197db8df8ee06427
Reviewed-on: https://go-review.googlesource.com/27991
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
8 years agocmd/compile: intrinsify the rest of runtime/internal/atomic for amd64
Keith Randall [Thu, 25 Aug 2016 23:02:57 +0000 (16:02 -0700)]
cmd/compile: intrinsify the rest of runtime/internal/atomic for amd64

Atomic swap, add/and/or, compare and swap.

Also works on amd64p32.

Change-Id: Idf2d8f3e1255f71deba759e6e75e293afe4ab2ba
Reviewed-on: https://go-review.googlesource.com/27813
Reviewed-by: Cherry Zhang <cherryyz@google.com>
8 years agotime: always use $GOROOT/lib/time/zoneinfo.zip with genzabbrs.go
Alex Brainman [Fri, 26 Aug 2016 06:57:00 +0000 (16:57 +1000)]
time: always use $GOROOT/lib/time/zoneinfo.zip with genzabbrs.go

genzabbrs.go uses whatever zoneinfo database available on the system.
This makes genzabbrs.go output change from system to system. Adjust
go:generate line to always use $GOROOT/lib/time/zoneinfo.zip, so it
does not matter who runs the command.

Also move go:generate line into zoneinfo.go, so it can be run
on Unix (see #16368 for details).

Fixes #15802.

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

8 years agohash/crc32: improve the AMD64 implementation using SSE4.2
Radu Berinde [Sat, 27 Aug 2016 17:17:30 +0000 (13:17 -0400)]
hash/crc32: improve the AMD64 implementation using SSE4.2

The algorithm is explained in the comments. The improvement in
throughput is about 1.4x for buffers between 500b-4Kb and 2.5x-2.6x
for larger buffers.

Additionally, we no longer initialize the software tables if SSE4.2 is
available.

Adding a test for the SSE implementation (restricted to amd64 and
amd64p32).

Benchmarks on a Haswell i5-4670 @ 3.4 GHz:

name                           old time/op    new time/op     delta
CastagnoliCrc15B-4               21.9ns ± 1%     22.9ns ± 0%    +4.45%
CastagnoliCrc15BMisaligned-4     22.6ns ± 0%     23.4ns ± 0%    +3.43%
CastagnoliCrc40B-4               23.3ns ± 0%     23.9ns ± 0%    +2.58%
CastagnoliCrc40BMisaligned-4     25.4ns ± 0%     26.1ns ± 0%    +2.86%
CastagnoliCrc512-4               72.6ns ± 0%     52.8ns ± 0%   -27.33%
CastagnoliCrc512Misaligned-4     76.3ns ± 1%     56.3ns ± 0%   -26.18%
CastagnoliCrc1KB-4                128ns ± 1%       89ns ± 0%   -30.04%
CastagnoliCrc1KBMisaligned-4      130ns ± 0%       88ns ± 0%   -32.65%
CastagnoliCrc4KB-4                461ns ± 0%      187ns ± 0%   -59.40%
CastagnoliCrc4KBMisaligned-4      463ns ± 0%      191ns ± 0%   -58.77%
CastagnoliCrc32KB-4              3.58µs ± 0%     1.35µs ± 0%   -62.22%
CastagnoliCrc32KBMisaligned-4    3.58µs ± 0%     1.36µs ± 0%   -61.84%

name                           old speed      new speed       delta
CastagnoliCrc15B-4              684MB/s ± 1%    655MB/s ± 0%    -4.32%
CastagnoliCrc15BMisaligned-4    663MB/s ± 0%    641MB/s ± 0%    -3.32%
CastagnoliCrc40B-4             1.72GB/s ± 0%   1.67GB/s ± 0%    -2.69%
CastagnoliCrc40BMisaligned-4   1.58GB/s ± 0%   1.53GB/s ± 0%    -2.82%
CastagnoliCrc512-4             7.05GB/s ± 0%   9.70GB/s ± 0%   +37.59%
CastagnoliCrc512Misaligned-4   6.71GB/s ± 1%   9.09GB/s ± 0%   +35.43%
CastagnoliCrc1KB-4             7.98GB/s ± 1%  11.46GB/s ± 0%   +43.55%
CastagnoliCrc1KBMisaligned-4   7.86GB/s ± 0%  11.70GB/s ± 0%   +48.75%
CastagnoliCrc4KB-4             8.87GB/s ± 0%  21.80GB/s ± 0%  +145.69%
CastagnoliCrc4KBMisaligned-4   8.83GB/s ± 0%  21.39GB/s ± 0%  +142.25%
CastagnoliCrc32KB-4            9.15GB/s ± 0%  24.22GB/s ± 0%  +164.62%
CastagnoliCrc32KBMisaligned-4  9.16GB/s ± 0%  24.00GB/s ± 0%  +161.94%

Fixes #16107.

Change-Id: Ibe50ea76574674ce0571ef31c31015e0ed66b907
Reviewed-on: https://go-review.googlesource.com/27931
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocrypto/tls: add KeyLogWriter for debugging
Joonas Kuorilehto [Sat, 20 Aug 2016 11:41:42 +0000 (14:41 +0300)]
crypto/tls: add KeyLogWriter for debugging

Add support for writing TLS client random and master secret
in NSS key log format.

https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format

Normally this is enabled by a developer debugging TLS based
applications, especially HTTP/2, by setting the KeyLogWriter
to an open file. The keys negotiated in handshake are then
logged and can be used to decrypt TLS sessions e.g. in Wireshark.

Applications may choose to add support similar to NSS where this
is enabled by environment variable, but no such mechanism is
built in to Go. Instead each application must explicitly enable.

Fixes #13057.

Change-Id: If6edd2d58999903e8390b1674ba4257ecc747ae1
Reviewed-on: https://go-review.googlesource.com/27434
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agoRevert "hash/crc32: improve the AMD64 implementation using SSE4.2"
Keith Randall [Sat, 27 Aug 2016 16:48:22 +0000 (16:48 +0000)]
Revert "hash/crc32: improve the AMD64 implementation using SSE4.2"

This reverts commit 54d7de7dd62bab764125c48fd159bb938da078e1.

It was breaking non-amd64 builds.

Change-Id: I22650e922498eeeba3d4fa08bb4ea40a210c8f97
Reviewed-on: https://go-review.googlesource.com/27925
Reviewed-by: Keith Randall <khr@golang.org>
8 years agohash/crc32: improve the AMD64 implementation using SSE4.2
Radu Berinde [Tue, 23 Aug 2016 21:33:21 +0000 (17:33 -0400)]
hash/crc32: improve the AMD64 implementation using SSE4.2

The algorithm is explained in the comments. The improvement in
throughput is about 1.4x for buffers between 500b-4Kb and 2.5x-2.6x
for larger buffers.

Additionally, we no longer initialize the software tables if SSE4.2 is
available.

Benchmarks on a Haswell i5-4670 @ 3.4 GHz:

name                           old time/op    new time/op     delta
CastagnoliCrc15B-4               21.9ns ± 1%     22.9ns ± 0%    +4.45%
CastagnoliCrc15BMisaligned-4     22.6ns ± 0%     23.4ns ± 0%    +3.43%
CastagnoliCrc40B-4               23.3ns ± 0%     23.9ns ± 0%    +2.58%
CastagnoliCrc40BMisaligned-4     25.4ns ± 0%     26.1ns ± 0%    +2.86%
CastagnoliCrc512-4               72.6ns ± 0%     52.8ns ± 0%   -27.33%
CastagnoliCrc512Misaligned-4     76.3ns ± 1%     56.3ns ± 0%   -26.18%
CastagnoliCrc1KB-4                128ns ± 1%       89ns ± 0%   -30.04%
CastagnoliCrc1KBMisaligned-4      130ns ± 0%       88ns ± 0%   -32.65%
CastagnoliCrc4KB-4                461ns ± 0%      187ns ± 0%   -59.40%
CastagnoliCrc4KBMisaligned-4      463ns ± 0%      191ns ± 0%   -58.77%
CastagnoliCrc32KB-4              3.58µs ± 0%     1.35µs ± 0%   -62.22%
CastagnoliCrc32KBMisaligned-4    3.58µs ± 0%     1.36µs ± 0%   -61.84%

name                           old speed      new speed       delta
CastagnoliCrc15B-4              684MB/s ± 1%    655MB/s ± 0%    -4.32%
CastagnoliCrc15BMisaligned-4    663MB/s ± 0%    641MB/s ± 0%    -3.32%
CastagnoliCrc40B-4             1.72GB/s ± 0%   1.67GB/s ± 0%    -2.69%
CastagnoliCrc40BMisaligned-4   1.58GB/s ± 0%   1.53GB/s ± 0%    -2.82%
CastagnoliCrc512-4             7.05GB/s ± 0%   9.70GB/s ± 0%   +37.59%
CastagnoliCrc512Misaligned-4   6.71GB/s ± 1%   9.09GB/s ± 0%   +35.43%
CastagnoliCrc1KB-4             7.98GB/s ± 1%  11.46GB/s ± 0%   +43.55%
CastagnoliCrc1KBMisaligned-4   7.86GB/s ± 0%  11.70GB/s ± 0%   +48.75%
CastagnoliCrc4KB-4             8.87GB/s ± 0%  21.80GB/s ± 0%  +145.69%
CastagnoliCrc4KBMisaligned-4   8.83GB/s ± 0%  21.39GB/s ± 0%  +142.25%
CastagnoliCrc32KB-4            9.15GB/s ± 0%  24.22GB/s ± 0%  +164.62%
CastagnoliCrc32KBMisaligned-4  9.16GB/s ± 0%  24.00GB/s ± 0%  +161.94%

Fixes #16107.

Change-Id: I8fa827ec03f708ba27ee71c833f7544ad9dc5bc3
Reviewed-on: https://go-review.googlesource.com/24471
Reviewed-by: Keith Randall <khr@golang.org>
8 years agocmd/compile: make dumpdepth a global again
Robert Griesemer [Fri, 26 Aug 2016 23:38:06 +0000 (16:38 -0700)]
cmd/compile: make dumpdepth a global again

Fixes indenting in debug output like -W.

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

8 years agoRevert "cmd/compile: use printer in typefmt, Tconv"
Matthew Dempsky [Fri, 26 Aug 2016 23:39:50 +0000 (23:39 +0000)]
Revert "cmd/compile: use printer in typefmt, Tconv"

This reverts commit 8fb0893307b0d4ab4a115a6151ee8d344d3c1d74.

Broke go/ast tests.

Change-Id: I5c314cb29731d4bc3a0873af8ebfe376f5faba8a
Reviewed-on: https://go-review.googlesource.com/27923
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/compile: use printer in typefmt, Tconv
Robert Griesemer [Thu, 25 Aug 2016 06:53:16 +0000 (23:53 -0700)]
cmd/compile: use printer in typefmt, Tconv

Change-Id: I9e99289070d63a2509aec1e91b9dd7437a08af5e
Reviewed-on: https://go-review.googlesource.com/27921
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/compile: use printer in exprfmt
Robert Griesemer [Thu, 25 Aug 2016 06:44:55 +0000 (23:44 -0700)]
cmd/compile: use printer in exprfmt

Change-Id: I7376c3bb55529a575e74985c2d7f0cf07c8996e7
Reviewed-on: https://go-review.googlesource.com/27920
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agogo/build: don't alter InstallSuffix for default compile options
Josh Bleecher Snyder [Thu, 14 Jul 2016 21:07:18 +0000 (14:07 -0700)]
go/build: don't alter InstallSuffix for default compile options

Fixes #16378.

Change-Id: I99a064f1afec78fb63cb3719061d20be0f21d45d
Reviewed-on: https://go-review.googlesource.com/24930
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/compile: use printer in stmtfmt, hconv
Robert Griesemer [Thu, 25 Aug 2016 06:26:07 +0000 (23:26 -0700)]
cmd/compile: use printer in stmtfmt, hconv

Change-Id: If11d328101a82de5ead04159d3085e3d59869283
Reviewed-on: https://go-review.googlesource.com/27919
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/compile: use printer in sconv, symfmt
Robert Griesemer [Thu, 25 Aug 2016 06:02:08 +0000 (23:02 -0700)]
cmd/compile: use printer in sconv, symfmt

Change-Id: Iec33775ff5a786f6c52024d592f634231acf91c0
Reviewed-on: https://go-review.googlesource.com/27918
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/compile: use printer in vconv
Robert Griesemer [Thu, 25 Aug 2016 05:15:07 +0000 (22:15 -0700)]
cmd/compile: use printer in vconv

Change-Id: Ib30ed686448c4c0a5777cdf1d505ea06eb8b2a47
Reviewed-on: https://go-review.googlesource.com/27917
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/compile: introduce printer for internal formatting; use in jconv
Robert Griesemer [Thu, 25 Aug 2016 04:47:58 +0000 (21:47 -0700)]
cmd/compile: introduce printer for internal formatting; use in jconv

Starting point for uniform use of printer in fmt.go.
It provides a hook to store additional state (and
remove global variables) and should also be more
efficient and cleaner than the mix of string concatenation
and bytes.Buffer use we have now.

Change-Id: I72de14b01850cca32d407a1cb16c894179ea8848
Reviewed-on: https://go-review.googlesource.com/27916
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/compile: reintroduce support for version 0 export format
Robert Griesemer [Fri, 26 Aug 2016 20:06:59 +0000 (13:06 -0700)]
cmd/compile: reintroduce support for version 0 export format

The Go1.7 export format didn't encode the field package for
blank struct fields (#15514). Re-introduce support for that
format so we can read it w/o error.

For #16881.

Change-Id: Ib131d41aac56dbf970aab15ae7e75ef3944b412d
Reviewed-on: https://go-review.googlesource.com/27912
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agogo/internal/gcimporter: fail gracefully on export format skew
Robert Griesemer [Fri, 26 Aug 2016 00:17:50 +0000 (17:17 -0700)]
go/internal/gcimporter: fail gracefully on export format skew

Port of changes made to compiler in
https://go-review.googlesource.com/27814.

Correctly handle export format version 0 (we only do this
in x/tools/gcimporter15 at the moment - this is a backport
of that code for struct fields).

Added tests for version handling and detection of corrupted
export data.

Fixes #16881.

Change-Id: I246553c689c89ef5c7fedd1e43717504c2838804
Reviewed-on: https://go-review.googlesource.com/27816
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agoruntime: have typelinksinit work forwards
David Crawshaw [Fri, 26 Aug 2016 02:19:16 +0000 (22:19 -0400)]
runtime: have typelinksinit work forwards

For reasons I have forgotten typelinksinit processed modules backwards.
(I suspect this was an attempt to process types in the executing
binary first.)

It does not appear to be necessary, and it is not the order we want
when a module can be loaded at an arbitrary point during a program's
execution as a plugin. So reverse the order.

While here, make it safe to call typelinksinit multiple times.

Change-Id: Ie10587c55c8e5efa0542981efb6eb3c12dd59e8c
Reviewed-on: https://go-review.googlesource.com/27822
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/link: make DynlinkingGo a method
David Crawshaw [Fri, 26 Aug 2016 01:06:10 +0000 (21:06 -0400)]
cmd/link: make DynlinkingGo a method

This will allow it to depend on whether plugin.Open is a symbol to be
linked in.

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

8 years agocmd/compile: add MIPS64 optimizations, SSA on by default
Cherry Zhang [Thu, 25 Aug 2016 19:52:45 +0000 (15:52 -0400)]
cmd/compile: add MIPS64 optimizations, SSA on by default

Add the following optimizations:
- fold constants
- fold address into load/store
- simplify extensions and conditional branches
- remove nil checks

Turn on SSA on MIPS64 by default, and toggle the tests.

Fixes #16359.

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

8 years agomath: optimize Ceil, Floor and Trunc on s390x
Michael Munday [Fri, 26 Aug 2016 15:39:47 +0000 (11:39 -0400)]
math: optimize Ceil, Floor and Trunc on s390x

Use the FIDBR instruction to round floating-point numbers to integers.

name   old time/op  new time/op  delta
Ceil   14.1ns ± 0%   3.0ns ± 0%  -78.89%  (p=0.000 n=10+10)
Floor  6.42ns ± 0%  3.03ns ± 0%  -52.80%  (p=0.000 n=10+10)
Trunc  6.67ns ± 0%  3.03ns ± 0%  -54.57%   (p=0.000 n=10+9)

Change-Id: I3b416f6d0bccaaa9b547de86356471365862399c
Reviewed-on: https://go-review.googlesource.com/27827
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/internal/obj/s390x: add FIDBR and FIEBR instructions
Michael Munday [Fri, 26 Aug 2016 15:28:41 +0000 (11:28 -0400)]
cmd/internal/obj/s390x: add FIDBR and FIEBR instructions

FIDBR and FIEBR can be used for floating-point to integer rounding.
The relevant functions (Ceil, Floor and Trunc) will be updated
in a future CL.

Change-Id: I5952d67ab29d5ef8923ff1143e17a8d30169d692
Reviewed-on: https://go-review.googlesource.com/27826
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/internal/obj/s390x: add atomic operation instructions
Michael Munday [Fri, 26 Aug 2016 14:33:34 +0000 (10:33 -0400)]
cmd/internal/obj/s390x: add atomic operation instructions

Adds the following s390x instructions from the interlocked access
facility:

 * LAA(G)  - load and add
 * LAAL(G) - load and add logical
 * LAN(G)  - load and and
 * LAX(G)  - load and exclusive or
 * LAO(G)  - load and or

These instructions can be used for atomic arithmetic/logical
operations. The atomic packages will be updated in future CLs.

Change-Id: Idc850ac6749b3e778fda3da66bcd864f6b1df375
Reviewed-on: https://go-review.googlesource.com/27871
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/compile: qualify unexported fields of unnamed types
David Crawshaw [Thu, 25 Aug 2016 18:31:50 +0000 (14:31 -0400)]
cmd/compile: qualify unexported fields of unnamed types

The compiler was canonicalizing unnamed types of the form

struct { i int }

across packages, even though an unexported field i should not be
accessible from other packages.

The fix requires both qualifying the field name in the string used by
the compiler to distinguish the type, and ensuring the struct's pkgpath
is set in the rtype version of the data when the type being written is
not part of the localpkg.

Fixes #16616

Change-Id: Ibab160b8b5936dfa47b17dbfd48964a65586785b
Reviewed-on: https://go-review.googlesource.com/27791
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
8 years agoos: fix build error on plan9
Hiroshi Ioka [Fri, 26 Aug 2016 08:44:30 +0000 (17:44 +0900)]
os: fix build error on plan9

https://go-review.googlesource.com/#/c/27580 added the test.
However the test use syscall.ELOOP which is not defined on plan9.
Move test code from "os_test.go" to "os_windows_test.go" to prevent
build error.

Change-Id: Ie7f05bfb9ab229e06a8e82a4b3b8a7ca82d4663b
Reviewed-on: https://go-review.googlesource.com/27833
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David du Colombier <0intro@gmail.com>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
8 years agospec: clarify text on init functions
Robert Griesemer [Fri, 26 Aug 2016 04:01:17 +0000 (21:01 -0700)]
spec: clarify text on init functions

For #16874.

Change-Id: I2e13f582297606e506d805755a6cfc1f3d4306a2
Reviewed-on: https://go-review.googlesource.com/27817
Reviewed-by: Rob Pike <r@golang.org>
8 years agoos: prevent infinite symlink loop of Stat on Windows
Hiroshi Ioka [Thu, 18 Aug 2016 07:10:28 +0000 (16:10 +0900)]
os: prevent infinite symlink loop of Stat on Windows

The Windows version of Stat calls Readlink iteratively until
reaching a non-symlink file.
If the given file is a circular symlink, It never stops.
This CL defines the maximum number of symlink loop count.
If the loop count will exceed that number, Stat will return error.

Fixes #16538

Change-Id: Ia9f3f2259a8d32801461c5041cc24a34f9f81009
Reviewed-on: https://go-review.googlesource.com/27580
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
8 years agocmd/compile: fail gracefully on export format skew
Robert Griesemer [Thu, 25 Aug 2016 23:53:10 +0000 (16:53 -0700)]
cmd/compile: fail gracefully on export format skew

Import errors due to unexpected format are virtually
always due to version skew. Don't panic but report a
good error message (incl. hint that the imported package
needs to be reinstalled) if not in debugFormat mode.

Recognize export data format version and store it so
it can be used to automatically handle minor version
differences. We did this before, but not very well.

No export data format changes.

Manually tested with corrupted export data.

For #16881.

Change-Id: I53ba98ef747b1c81033a914bb61ee52991f35a90
Reviewed-on: https://go-review.googlesource.com/27814
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/link: hide funcsym symbols
Michael Hudson-Doyle [Fri, 26 Aug 2016 00:15:00 +0000 (12:15 +1200)]
cmd/link: hide funcsym symbols

As far as I can tell, this check has been
non-functional since it was introduced.

This cuts 57k off cmd/go and 70k off cmd/compile.

Based on golang.org/cl/24710 by Josh Bleecher Snyder.

Change-Id: I1162a066971df1a067b50afa1cfa0819a6913574
Reviewed-on: https://go-review.googlesource.com/27830
Reviewed-by: David Crawshaw <crawshaw@golang.org>
8 years agosyscall: fix plan9/386 RawSyscall6
Josh Bleecher Snyder [Fri, 26 Aug 2016 00:19:28 +0000 (17:19 -0700)]
syscall: fix plan9/386 RawSyscall6

Fixes the build.

Change-Id: I34bcae08cfb43257aeb9086336966ef85f15fe1d
Reviewed-on: https://go-review.googlesource.com/27815
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
8 years agonet/http, cmd/compile: minor vet fixes
Josh Bleecher Snyder [Thu, 25 Aug 2016 20:42:49 +0000 (13:42 -0700)]
net/http, cmd/compile: minor vet fixes

Updates #11041

Change-Id: Ia0151723e3bc0d163cc687a02bfc5e0285d95ffa
Reviewed-on: https://go-review.googlesource.com/27810
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile: inline atomics from runtime/internal/atomic on amd64
Keith Randall [Tue, 23 Aug 2016 23:49:28 +0000 (16:49 -0700)]
cmd/compile: inline atomics from runtime/internal/atomic on amd64

Inline atomic reads and writes on amd64.  There's no reason
to pay the overhead of a call for these.

To keep atomic loads from being reordered, we make them
return a <value,memory> tuple.

Change the meaning of resultInArg0 for tuple-generating ops
to mean the first part of the result tuple, not the second.
This means we can always put the store part of the tuple last,
matching how arguments are laid out.  This requires reordering
the outputs of add32carry and sub32carry and their descendents
in various architectures.

benchmark                    old ns/op     new ns/op     delta
BenchmarkAtomicLoad64-8      2.09          0.26          -87.56%
BenchmarkAtomicStore64-8     7.54          5.72          -24.14%

TBD (in a different CL): Cas, Or8, ...

Change-Id: I713ea88e7da3026c44ea5bdb56ed094b20bc5207
Reviewed-on: https://go-review.googlesource.com/27641
Reviewed-by: Cherry Zhang <cherryyz@google.com>
8 years agoall: fix assembly vet issues
Josh Bleecher Snyder [Mon, 11 Jul 2016 23:05:57 +0000 (16:05 -0700)]
all: fix assembly vet issues

Add missing function prototypes.
Fix function prototypes.
Use FP references instead of SP references.
Fix variable names.
Update comments.
Clean up whitespace. (Not for vet.)

All fairly minor fixes to make vet happy.

Updates #11041

Change-Id: Ifab2cdf235ff61cdc226ab1d84b8467b5ac9446c
Reviewed-on: https://go-review.googlesource.com/27713
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agoarchive/tar: isolate regular and sparse file handling as methods
Joe Tsai [Sat, 20 Aug 2016 08:46:32 +0000 (01:46 -0700)]
archive/tar: isolate regular and sparse file handling as methods

Factor out the regular file handling logic into handleRegularFile
from nextHeader. We will need to reuse this logic when fixing #15573
in a future CL.

Factor out the sparse file handling logic into handleSparseFile.
Currently this logic is split between nextHeader (for GNU sparse
files) and Next (for PAX sparse files). Instead, we move this
related code into a single method.

There is no overall logic change. Thus, no unit tests.

Updates #15573 #15564

Change-Id: I3b8270d8b4e080e77d6c0df6a123d677c82cc466
Reviewed-on: https://go-review.googlesource.com/27454
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: send Content-Range if no byte range overlaps
Sina Siadat [Fri, 17 Jun 2016 16:32:59 +0000 (21:02 +0430)]
net/http: send Content-Range if no byte range overlaps

RFC 7233, section 4.4 says:
>>>
For byte ranges, failing to overlap the current extent means that the
first-byte-pos of all of the byte-range-spec values were greater than the
current length of the selected representation.  When this status code is
generated in response to a byte-range request, the sender SHOULD generate a
Content-Range header field specifying the current length of the selected
representation
<<<

Thus, we should send the Content-Range only if none of the ranges
overlap.

Fixes #15798.

Change-Id: Ic9a3e1b3a8730398b4bdff877a8f2fd2e30149e3
Reviewed-on: https://go-review.googlesource.com/24212
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: when inlining ==, don’t take the address of the values
Josh Bleecher Snyder [Fri, 15 Apr 2016 22:49:00 +0000 (15:49 -0700)]
cmd/compile: when inlining ==, don’t take the address of the values

This CL reworks walkcompare for clarity and concision.
It also makes one significant functional change.
(The functional change is hard to separate cleanly
from the cleanup, so I just did them together.)
When inlining and unrolling an equality comparison
for a small struct or array, compare the elements like:

a[0] == b[0] && a[1] == b[1]

rather than

pa := &a
pb := &b
pa[0] == pb[0] && pa[1] == pb[1]

The result is the same, but taking the address
and working through the indirect
forces the backends to generate less efficient code.

This is only an improvement with the SSA backend.
However, every port but s390x now has a working
SSA backend, and switching to the SSA backend
by default everywhere is a priority for Go 1.8.
It thus seems reasonable to start to prioritize
SSA performance over the old backend.

Updates #15303

Sample code:

type T struct {
a, b int8
}

func g(a T) bool {
return a == T{1, 2}
}

SSA before:

"".g t=1 size=80 args=0x10 locals=0x8
0x0000 00000 (badeq.go:7) TEXT "".g(SB), $8-16
0x0000 00000 (badeq.go:7) SUBQ $8, SP
0x0004 00004 (badeq.go:7) FUNCDATA $0, gclocals·23e8278e2b69a3a75fa59b23c49ed6ad(SB)
0x0004 00004 (badeq.go:7) FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
0x0004 00004 (badeq.go:8) MOVBLZX "".a+16(FP), AX
0x0009 00009 (badeq.go:8) MOVB AL, "".autotmp_0+6(SP)
0x000d 00013 (badeq.go:8) MOVBLZX "".a+17(FP), AX
0x0012 00018 (badeq.go:8) MOVB AL, "".autotmp_0+7(SP)
0x0016 00022 (badeq.go:8) MOVB $0, "".autotmp_1+4(SP)
0x001b 00027 (badeq.go:8) MOVB $1, "".autotmp_1+4(SP)
0x0020 00032 (badeq.go:8) MOVB $2, "".autotmp_1+5(SP)
0x0025 00037 (badeq.go:8) MOVBLZX "".autotmp_0+6(SP), AX
0x002a 00042 (badeq.go:8) MOVBLZX "".autotmp_1+4(SP), CX
0x002f 00047 (badeq.go:8) CMPB AL, CL
0x0031 00049 (badeq.go:8) JNE 70
0x0033 00051 (badeq.go:8) MOVBLZX "".autotmp_0+7(SP), AX
0x0038 00056 (badeq.go:8) CMPB AL, $2
0x003a 00058 (badeq.go:8) SETEQ AL
0x003d 00061 (badeq.go:8) MOVB AL, "".~r1+24(FP)
0x0041 00065 (badeq.go:8) ADDQ $8, SP
0x0045 00069 (badeq.go:8) RET
0x0046 00070 (badeq.go:8) MOVB $0, AL
0x0048 00072 (badeq.go:8) JMP 61

SSA after:

"".g t=1 size=32 args=0x10 locals=0x0
0x0000 00000 (badeq.go:7) TEXT "".g(SB), $0-16
0x0000 00000 (badeq.go:7) NOP
0x0000 00000 (badeq.go:7) NOP
0x0000 00000 (badeq.go:7) FUNCDATA $0, gclocals·23e8278e2b69a3a75fa59b23c49ed6ad(SB)
0x0000 00000 (badeq.go:7) FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
0x0000 00000 (badeq.go:8) MOVBLZX "".a+8(FP), AX
0x0005 00005 (badeq.go:8) CMPB AL, $1
0x0007 00007 (badeq.go:8) JNE 25
0x0009 00009 (badeq.go:8) MOVBLZX "".a+9(FP), CX
0x000e 00014 (badeq.go:8) CMPB CL, $2
0x0011 00017 (badeq.go:8) SETEQ AL
0x0014 00020 (badeq.go:8) MOVB AL, "".~r1+16(FP)
0x0018 00024 (badeq.go:8) RET
0x0019 00025 (badeq.go:8) MOVB $0, AL
0x001b 00027 (badeq.go:8) JMP 20

Change-Id: I120185d58012b7bbcdb1ec01225b5b08d0855d86
Reviewed-on: https://go-review.googlesource.com/22277
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agopath/filepath: don't return SkipDir at top
Ian Lance Taylor [Thu, 7 Jul 2016 00:11:29 +0000 (17:11 -0700)]
path/filepath: don't return SkipDir at top

If the walker function called on a top-level file returns SkipDir,
then (before this change) Walk would return SkipDir, which the
documentation implies will not happen.

Fixes #16280.

Change-Id: I37d63bdcef7af4b56e342b624cf0d4b42e65c297
Reviewed-on: https://go-review.googlesource.com/24780
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/compile/internal/obj/x86: clean up "is leaf?" check
Josh Bleecher Snyder [Thu, 7 Jul 2016 23:21:53 +0000 (16:21 -0700)]
cmd/compile/internal/obj/x86: clean up "is leaf?" check

Minor code cleanup. No functional changes.

Change-Id: I2e631b43b122174302a182a1a286c0f873851ce6
Reviewed-on: https://go-review.googlesource.com/24813
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/internal/obj/x86: remove pointless NOPs
Josh Bleecher Snyder [Thu, 16 Jun 2016 17:49:32 +0000 (10:49 -0700)]
cmd/internal/obj/x86: remove pointless NOPs

They are no longer needed by stkcheck.

Fixes #16057

Change-Id: I57cb55de5b7a7a1d31a3da200a3a2d51576b68f5
Reviewed-on: https://go-review.googlesource.com/26667
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agowebsite: recreate 16px and 32px favicon
Egon Elbre [Thu, 11 Aug 2016 06:05:54 +0000 (09:05 +0300)]
website: recreate 16px and 32px favicon

Recreated original favicon with svg. Note, the rasterizations are hand
tweaked for crispness and straight export will not give the same results.

Fixes #6938

Change-Id: I9bf7b59028711361c29365b145932d90af419b69
Reviewed-on: https://go-review.googlesource.com/26850
Reviewed-by: Chris Broadfoot <cbro@golang.org>
8 years agocmd/compile: get MIPS64 SSA working
Cherry Zhang [Mon, 22 Aug 2016 16:25:23 +0000 (12:25 -0400)]
cmd/compile: get MIPS64 SSA working

- implement *, /, %, shifts, Zero, Move.
- fix mistakes in comparison.
- fix floating point rounding.
- handle RetJmp in assembler (which was not handled, as a consequence
  Duff's device was disabled in the old backend.)

all.bash now passes with SSA on.

Updates #16359.

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

8 years agocmd/{asm,compile/internal}: delete dead code
Dave Cheney [Thu, 25 Aug 2016 06:40:50 +0000 (16:40 +1000)]
cmd/{asm,compile/internal}: delete dead code

Delete unused fields, methods, vars, and funcs. Spotted by
honnef.co/go/unused.

Change-Id: I0e65484bbd916e59369c4018be46f120b469d610
Reviewed-on: https://go-review.googlesource.com/27731
Run-TryBot: Dave Cheney <dave@cheney.net>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
8 years agoruntime: remove unused type sigtabtt
Ian Lance Taylor [Wed, 24 Aug 2016 23:06:10 +0000 (16:06 -0700)]
runtime: remove unused type sigtabtt

The type sigtabtt was introduced by an automated tool in
https://golang.org/cl/167550043. It was the Go version of the C type
SigTab. However, when the C code using SigTab was converted to Go in
https://golang.org/cl/168500044 it was rewritten to use a different Go
type, sigTabT, rather than sigtabtt (the difference being that sigTabT
uses string where sigtabtt uses *int8 from the C type char*). So this is
just a dreg from the conversion that was never actually used.

Change-Id: I2ec6eb4b25613bf5e5ad1dbba1f4b5ff20f80f55
Reviewed-on: https://go-review.googlesource.com/27691
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile: optimize integer "in range" expressions
Josh Bleecher Snyder [Fri, 27 May 2016 01:08:24 +0000 (18:08 -0700)]
cmd/compile: optimize integer "in range" expressions

Use unsigned comparisons to reduce from
two comparisons to one for integer "in range"
checks, such as a <= b && b < c.
We already do this for bounds checks.
Extend it to user code.

This is much easier to do in the front end than SSA.
A back end optimization would be more powerful,
but this is a good start.

This reduces the power of some of SSA prove
inferences (#16653), but those regressions appear
to be rare and not worth holding this CL for.

Fixes #15844.
Fixes #16697.

strconv benchmarks:

name                          old time/op  new time/op   delta
Atof64Decimal-8               41.4ns ± 3%   38.9ns ± 2%   -5.89%  (p=0.000 n=24+25)
Atof64Float-8                 48.5ns ± 0%   46.8ns ± 3%   -3.64%  (p=0.000 n=20+23)
Atof64FloatExp-8              97.7ns ± 4%   93.5ns ± 1%   -4.25%  (p=0.000 n=25+20)
Atof64Big-8                    187ns ± 8%    162ns ± 2%  -13.54%  (p=0.000 n=24+22)
Atof64RandomBits-8             250ns ± 6%    233ns ± 5%   -6.76%  (p=0.000 n=25+25)
Atof64RandomFloats-8           160ns ± 0%    152ns ± 0%   -5.00%  (p=0.000 n=21+22)
Atof32Decimal-8               41.1ns ± 1%   38.7ns ± 2%   -5.86%  (p=0.000 n=24+24)
Atof32Float-8                 46.1ns ± 1%   43.5ns ± 3%   -5.63%  (p=0.000 n=21+24)
Atof32FloatExp-8               101ns ± 4%    100ns ± 2%   -1.59%  (p=0.000 n=24+23)
Atof32Random-8                 136ns ± 3%    133ns ± 3%   -2.83%  (p=0.000 n=22+22)
Atoi-8                        33.8ns ± 3%   30.6ns ± 3%   -9.51%  (p=0.000 n=24+25)
AtoiNeg-8                     31.6ns ± 3%   29.1ns ± 2%   -8.05%  (p=0.000 n=23+24)
Atoi64-8                      48.6ns ± 1%   43.8ns ± 1%   -9.81%  (p=0.000 n=20+23)
Atoi64Neg-8                   47.1ns ± 4%   42.0ns ± 2%  -10.83%  (p=0.000 n=25+25)
FormatFloatDecimal-8           177ns ± 9%    178ns ± 6%     ~     (p=0.460 n=25+25)
FormatFloat-8                  282ns ± 6%    282ns ± 3%     ~     (p=0.954 n=25+22)
FormatFloatExp-8               259ns ± 7%    255ns ± 6%     ~     (p=0.089 n=25+24)
FormatFloatNegExp-8            253ns ± 6%    254ns ± 6%     ~     (p=0.941 n=25+24)
FormatFloatBig-8               340ns ± 6%    341ns ± 8%     ~     (p=0.600 n=22+25)
AppendFloatDecimal-8          79.4ns ± 0%   80.6ns ± 6%     ~     (p=0.861 n=20+25)
AppendFloat-8                  175ns ± 3%    174ns ± 0%     ~     (p=0.722 n=25+20)
AppendFloatExp-8               142ns ± 4%    142ns ± 2%     ~     (p=0.948 n=25+24)
AppendFloatNegExp-8            137ns ± 2%    138ns ± 2%   +0.70%  (p=0.001 n=24+25)
AppendFloatBig-8               218ns ± 3%    218ns ± 4%     ~     (p=0.596 n=25+25)
AppendFloatBinaryExp-8        80.0ns ± 4%   78.0ns ± 1%   -2.43%  (p=0.000 n=24+21)
AppendFloat32Integer-8        82.3ns ± 3%   79.3ns ± 4%   -3.69%  (p=0.000 n=24+25)
AppendFloat32ExactFraction-8   143ns ± 2%    143ns ± 0%     ~     (p=0.177 n=23+19)
AppendFloat32Point-8           175ns ± 3%    175ns ± 3%     ~     (p=0.062 n=24+25)
AppendFloat32Exp-8             139ns ± 2%    137ns ± 4%   -1.05%  (p=0.001 n=24+24)
AppendFloat32NegExp-8          134ns ± 0%    137ns ± 4%   +2.06%  (p=0.000 n=22+25)
AppendFloat64Fixed1-8         97.8ns ± 0%   98.6ns ± 3%     ~     (p=0.711 n=20+25)
AppendFloat64Fixed2-8          110ns ± 3%    110ns ± 5%   -0.45%  (p=0.037 n=24+24)
AppendFloat64Fixed3-8          102ns ± 3%    102ns ± 3%     ~     (p=0.684 n=24+24)
AppendFloat64Fixed4-8          112ns ± 3%    110ns ± 0%   -1.43%  (p=0.000 n=25+18)
FormatInt-8                   3.18µs ± 4%   3.10µs ± 6%   -2.54%  (p=0.001 n=24+25)
AppendInt-8                   1.81µs ± 5%   1.80µs ± 5%     ~     (p=0.648 n=25+25)
FormatUint-8                   812ns ± 6%    816ns ± 6%     ~     (p=0.777 n=25+25)
AppendUint-8                   536ns ± 4%    538ns ± 3%     ~     (p=0.798 n=20+22)
Quote-8                        605ns ± 6%    602ns ± 9%     ~     (p=0.573 n=25+25)
QuoteRune-8                   99.5ns ± 8%  100.2ns ± 7%     ~     (p=0.432 n=25+25)
AppendQuote-8                  361ns ± 3%    363ns ± 4%     ~     (p=0.085 n=25+25)
AppendQuoteRune-8             23.3ns ± 3%   22.4ns ± 2%   -3.79%  (p=0.000 n=25+24)
UnquoteEasy-8                  146ns ± 4%    145ns ± 5%     ~     (p=0.112 n=24+24)
UnquoteHard-8                  804ns ± 6%    771ns ± 6%   -4.10%  (p=0.000 n=25+24)

Change-Id: Ibd384e46e90f1cfa40503c8c6352a54c65b72980
Reviewed-on: https://go-review.googlesource.com/27652
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/link/internal, cmd/internal/obj: introduce ctxt.Logf
Dave Cheney [Thu, 25 Aug 2016 02:32:42 +0000 (12:32 +1000)]
cmd/link/internal, cmd/internal/obj: introduce ctxt.Logf

Replace the various calls to Fprintf(ctxt.Bso, ...) with a helper,
ctxt.Logf. This also addresses the various inconsistent flushing of
ctxt.Bso.

Because we have two Link structures, add Link.Logf in both places.

Change-Id: I23093f9b9b3bf33089a0ffd7f815f92dcd1a1fa1
Reviewed-on: https://go-review.googlesource.com/27730
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/link/internal/ld: move ld.Cpos to coutbuf.Offset
Dave Cheney [Wed, 24 Aug 2016 10:27:38 +0000 (20:27 +1000)]
cmd/link/internal/ld: move ld.Cpos to coutbuf.Offset

This change moves the ld.Cpos function to a method on coutbuf. This is
part of a larger change that makes ld.outbuf look more like a bio.Buf in
an effort to eventually replace the former with the latter.

Change-Id: I506f7131935a2aa903fa302a0fab0c5be50220fd
Reviewed-on: https://go-review.googlesource.com/27578
Run-TryBot: Dave Cheney <dave@cheney.net>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agoruntime: use clock_gettime for time.now() on s390x
Michael Munday [Wed, 24 Aug 2016 21:44:27 +0000 (17:44 -0400)]
runtime: use clock_gettime for time.now() on s390x

This should improve the precision of time.now() from microseconds
to nanoseconds.

Also, modify runtime.nanotime to keep it consistent with cleanup
done to time.now.

Updates #11222 for s390x.

Change-Id: I27864115ea1fee7299360d9003cd3a8355f624d3
Reviewed-on: https://go-review.googlesource.com/27710
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/internal/*: only call ctx.Bso.Flush when something has been written
Dave Cheney [Wed, 24 Aug 2016 10:44:09 +0000 (20:44 +1000)]
cmd/internal/*: only call ctx.Bso.Flush when something has been written

In many places where ctx.Bso.Flush is used as the target for some debug
logging, ctx.Bso.Flush is called unconditionally. In the majority of
cases where debug logging is not enabled, this means Flush is called
many times when there is nothing to be flushed (it will be called anyway
when ctx.Bso is eventually closed), sometimes in a loop.

Avoid this by moving the ctx.Bso.Flush call into the same condition
block as the debug print. This pattern was previously applied
sporadically.

Change-Id: I0444cb235cc8b9bac51a59b2e44e59872db2be06
Reviewed-on: https://go-review.googlesource.com/27579
Run-TryBot: Dave Cheney <dave@cheney.net>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/go: refactor cgo logic
Matthew Dempsky [Wed, 17 Aug 2016 17:16:55 +0000 (10:16 -0700)]
cmd/go: refactor cgo logic

Extract "cgo -dynimport" and "ld -r" logic into separate helper
methods to make (*builder).cgo somewhat more manageable.

Fixes #16650.

Change-Id: I3e4d77ff3791528b1233467060d3ea83cb854acb
Reviewed-on: https://go-review.googlesource.com/27270
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/asm, go/build: invoke cmd/asm only once per package
Josh Bleecher Snyder [Wed, 18 May 2016 20:27:11 +0000 (13:27 -0700)]
cmd/asm, go/build: invoke cmd/asm only once per package

Prior to this CL, cmd/go invoked cmd/asm once
for every assembly file.
The exec and cmd/asm startup overhead dwarfed
the actual time spent assembling.
This CL adds support to cmd/asm to process
multiple input files and uses it in cmd/go.

This cuts 10% off the wall time for 'go build -a math'.

Fixes #15680

Change-Id: I12d2ee2c817207954961dc8f37b8f2b09f835550
Reviewed-on: https://go-review.googlesource.com/27636
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
8 years agocmd/compile: handle OCONV[NOP] in samesafeexpr
Josh Bleecher Snyder [Wed, 1 Jun 2016 18:07:05 +0000 (11:07 -0700)]
cmd/compile: handle OCONV[NOP] in samesafeexpr

This increases the effectiveness of the
"integer-in-range" CL that follows.

Change-Id: I23b7b6809f0b2c25ed1d59dd2d5429c30f1db89c
Reviewed-on: https://go-review.googlesource.com/27651
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agospec: complete list of special comma-ok forms
Robert Griesemer [Wed, 24 Aug 2016 18:33:55 +0000 (11:33 -0700)]
spec: complete list of special comma-ok forms

The enumerations didn't include the syntactic form where the lhs is
full variable declaration with type specification, as in:

var x, ok T = ...

Fixes #15782.

Change-Id: I0f7bafc37dc9dcf62cdb0894a0d157074ccd4b3e
Reviewed-on: https://go-review.googlesource.com/27670
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
8 years agocmd/compile: remove unused importimport function
Robert Griesemer [Wed, 24 Aug 2016 20:12:34 +0000 (13:12 -0700)]
cmd/compile: remove unused importimport function

Functionality is present in bimport.go in slightly modified form.

Change-Id: I6be79d91588873e6ba70d6ab07ba2caa12346dfc
Reviewed-on: https://go-review.googlesource.com/27672
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/objdump: implement objdump of .o files
Keith Randall [Sun, 3 Jul 2016 00:19:25 +0000 (17:19 -0700)]
cmd/objdump: implement objdump of .o files

Update goobj reader so it can provide all the information
necessary to disassemble .o (and .a) files.

Grab architecture of .o files from header.

.o files have relocations in them.  This CL also contains a simple
mechanism to disassemble relocations and add relocation info as an extra
column in the output.

Fixes #13862

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

8 years agonet: use runtime.Keepalive for *netFD values
Ian Lance Taylor [Wed, 24 Aug 2016 00:47:11 +0000 (17:47 -0700)]
net: use runtime.Keepalive for *netFD values

The net package sets a finalizer on *netFD. I looked through all the
uses of *netFD in the package, looking for each case where a *netFD
was passed as an argument and the final reference to the argument was
not a function or method call. I added a call to runtime.KeepAlive after
each such final reference (there were only three).

The code is safe today without the KeepAlive calls because the compiler
keeps arguments alive for the duration of the function. However, that is
not a language requirement, so adding the KeepAlive calls ensures that
this code remains safe even if the compiler changes in the future.

Change-Id: I4e2bd7c5a946035dc509ccefb4828f72335a9ee3
Reviewed-on: https://go-review.googlesource.com/27650
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agoos: use runtime.Keepalive for *Process values
Ian Lance Taylor [Tue, 23 Aug 2016 22:56:43 +0000 (15:56 -0700)]
os: use runtime.Keepalive for *Process values

The os package sets a finalizer on *Process. I looked through all the
uses of *Process in the package, looking for each case where a *Process
was passed as an argument and the final reference to the argument was
not a function or method call. I added a call to runtime.KeepAlive after
each such final reference (there were only three).

The code is safe today without the KeepAlive calls because the compiler
keeps arguments alive for the duration of the function. However, that is
not a language requirement, so adding the KeepAlive calls ensures that
this code remains safe even if the compiler changes in the future.

I also removed an existing unnecessry call to runtime.KeepAlive. The
syscall.Syscall function is handled specially by the compiler to keep
its arguments alive.

Change-Id: Ibd2ff20b31ed3de4f6a59dd1633c1b44001d91d9
Reviewed-on: https://go-review.googlesource.com/27637
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agointernal/testenv: make MustHaveSymlink message friendly
Hiroshi Ioka [Wed, 24 Aug 2016 04:22:54 +0000 (13:22 +0900)]
internal/testenv: make MustHaveSymlink message friendly

Change-Id: If6e12ebc41152bc0534d3d383df80e960efe97f0
Reviewed-on: https://go-review.googlesource.com/27577
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile: minor cleanup in mapinit
Josh Bleecher Snyder [Mon, 20 Jun 2016 15:34:39 +0000 (08:34 -0700)]
cmd/compile: minor cleanup in mapinit

Change-Id: I7d58d200f7e8b2c0a6e35371da0dafd9b44e9057
Reviewed-on: https://go-review.googlesource.com/26757
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/compile: convert getdyn int arg to bool
Josh Bleecher Snyder [Mon, 16 May 2016 21:28:44 +0000 (14:28 -0700)]
cmd/compile: convert getdyn int arg to bool

Passes toolstash -cmp.

Change-Id: I5b893b8b82b358534fd85542f05e3aa7e666bcd3
Reviewed-on: https://go-review.googlesource.com/26752
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agocmd/compile: convert Dodata to a bool, rename to IsStatic
Josh Bleecher Snyder [Mon, 16 May 2016 21:23:12 +0000 (14:23 -0700)]
cmd/compile: convert Dodata to a bool, rename to IsStatic

Passes toolstash -cmp.

Change-Id: I2c204ec14b0a72b592fb336acdd4dff55650f7f6
Reviewed-on: https://go-review.googlesource.com/26751
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/compile: simplify isglobal
Josh Bleecher Snyder [Mon, 16 May 2016 21:14:16 +0000 (14:14 -0700)]
cmd/compile: simplify isglobal

Passes toolstash -cmp.

Change-Id: I16ec0c11096bf4c020cf41392effeb67436f32ba
Reviewed-on: https://go-review.googlesource.com/26750
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agosyscall, internal/syscall/windows, internal/syscall/windows/registry: make go generat...
Alex Brainman [Fri, 19 Aug 2016 05:00:29 +0000 (15:00 +1000)]
syscall, internal/syscall/windows, internal/syscall/windows/registry: make go generate work on every os

Fixes #16368

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

8 years agovendor: update vendored route
Mikio Hara [Tue, 23 Aug 2016 15:44:03 +0000 (00:44 +0900)]
vendor: update vendored route

Updates golang_org/x/net/route to rev 4d38db7 for:
- route: don't crash or hang up with corrupted messages

Change-Id: I22492f56a5e211b5a0479f1e07ad8f42f7b9ea03
Reviewed-on: https://go-review.googlesource.com/27574
Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/go: updates go get to return exit status 0 for test file only pkgs
Jess Frazelle [Fri, 20 May 2016 23:17:27 +0000 (16:17 -0700)]
cmd/go: updates go get to return exit status 0 for test file only pkgs

Updates the behavior of `go get` to return exit status 0 when a
requested package only contains test files.

Fixes #15093

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

8 years agocmd/compile: clean up ctz ops
Keith Randall [Tue, 23 Aug 2016 17:43:47 +0000 (10:43 -0700)]
cmd/compile: clean up ctz ops

Now that we have ops that can return 2 results, have BSF return a result
and flags.  We can then get rid of the redundant comparison and use CMOV
instead of CMOVconst ops.

Get rid of a bunch of the ops we don't use.  Ctz{8,16}, plus all the Clzs,
and CMOVNEs.  I don't think we'll ever use them, and they would be easy
to add back if needed.

Change-Id: I8858a1d017903474ea7e4002fc76a6a86e7bd487
Reviewed-on: https://go-review.googlesource.com/27630
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: export package for _ (blank) struct fields
Robert Griesemer [Tue, 23 Aug 2016 23:02:19 +0000 (16:02 -0700)]
cmd/compile: export package for _ (blank) struct fields

Blank struct fields are regular unexported fields. Two
blank fields are different if they are from different
packages. In order to correctly differentiate them, the
compiler needs the package information. Add it to the
export data.

Fixes #15514.

Change-Id: I421aaca22b542fcd0d66b2d2db777249cad78df6
Reviewed-on: https://go-review.googlesource.com/27639
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/compile: simplify field/method export (internal cleanup)
Robert Griesemer [Tue, 23 Aug 2016 22:18:09 +0000 (15:18 -0700)]
cmd/compile: simplify field/method export (internal cleanup)

Towards a fix for #15514.

Change-Id: I62073e9fdcfe5ddda9b0a47fe8554b524191a77c
Reviewed-on: https://go-review.googlesource.com/27638
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agoreflect: document equality guarantee for Type
Ross Light [Tue, 16 Aug 2016 18:10:36 +0000 (11:10 -0700)]
reflect: document equality guarantee for Type

The only previous mention of this property was in the String() method.
Since this is the only way to uniquely identify a type and we can't
change this property without breaking the Go 1 guarantee, it seems
better to document this property than hiding it on a method.

Fixes #16348

Change-Id: I3d25f7d6e6007e3c15c2e13010869888d0181fc2
Reviewed-on: https://go-review.googlesource.com/27170
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agoflag: improve comment for calling String with zero value
Ian Lance Taylor [Tue, 23 Aug 2016 20:54:01 +0000 (13:54 -0700)]
flag: improve comment for calling String with zero value

Update #16694.

Change-Id: Id6be1535d8a146b3dac3bee429ce407a51272032
Reviewed-on: https://go-review.googlesource.com/27634
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
8 years agotest: add test for gccgo issue #15722
Than McIntosh [Mon, 11 Jul 2016 18:26:18 +0000 (14:26 -0400)]
test: add test for gccgo issue #15722

Change-Id: I4faf9a55414e217f0c48528efb13ab8fdcd9bb16
Reviewed-on: https://go-review.googlesource.com/24845
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>

8 years agocmd/compile: clean up one Node.Etype usage
Josh Bleecher Snyder [Fri, 6 May 2016 16:24:16 +0000 (09:24 -0700)]
cmd/compile: clean up one Node.Etype usage

Whoever Marvin is, we're one step closer to realizing his dream.

Change-Id: I8dece4417d0f9ec234be158d0ee7bc6735342d93
Reviewed-on: https://go-review.googlesource.com/27465
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: add comment
Robert Griesemer [Tue, 23 Aug 2016 18:20:34 +0000 (11:20 -0700)]
cmd/compile: add comment

Minor update on https://go-review.googlesource.com/27441 .

Change-Id: I605a8bfbe67e259020aa53f1d2357808197d02b6
Reviewed-on: https://go-review.googlesource.com/27631
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/compile: fix binary import of unsafe.Pointer literals
Martin Möhrmann [Sun, 21 Aug 2016 15:08:04 +0000 (17:08 +0200)]
cmd/compile: fix binary import of unsafe.Pointer literals

Add a type conversion to uintptr for untyped constants
before the conversion to unsafe.Pointer.

Fixes #16317

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

8 years agocmd/compile: don't Fatal when printing -m debug information
Robert Griesemer [Mon, 22 Aug 2016 22:56:27 +0000 (15:56 -0700)]
cmd/compile: don't Fatal when printing -m debug information

Some FmtSharp export formatting flag support was removed with
commit b4e9f70. Don't panic if FmtSharp is set, just ignore it.

Fixes #16820.

Change-Id: Ie0c3d3774bd55002f6d2781b1212d070f083e6b2
Reviewed-on: https://go-review.googlesource.com/27556
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
8 years agocmd/compile: precompute constant square roots
Kevin Burke [Sun, 21 Aug 2016 05:05:47 +0000 (22:05 -0700)]
cmd/compile: precompute constant square roots

If a program wants to evaluate math.Sqrt for any constant value
(for example, math.Sqrt(3)), we can replace that expression with
its evaluation (1.7320508075688772) at compile time, instead of
generating a SQRT assembly command or equivalent.

Adds tests that math.Sqrt generates the correct values. I also
compiled a short program and verified that the Sqrt expression was
replaced by a constant value in the "after opt" step.

Adds a short doc to the top of generic.rules explaining what the file
does and how other files interact with it.

Fixes #15543.

Change-Id: I6b6e63ac61cec50763a09ba581024adeee03d4fa
Reviewed-on: https://go-review.googlesource.com/27457
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Keith Randall <khr@golang.org>
8 years agoruntime: add msan calls before calling traceback functions
Ian Lance Taylor [Mon, 11 Jul 2016 01:44:09 +0000 (18:44 -0700)]
runtime: add msan calls before calling traceback functions

Tell msan that the arguments to the traceback functions are initialized,
in case the traceback functions are compiled with -fsanitize=memory.

Change-Id: I3ab0816604906c6cd7086245e6ae2e7fa62fe354
Reviewed-on: https://go-review.googlesource.com/24856
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agocmd/link/internal/ld: camelCase a buch of snake_case names
Michael Matloob [Mon, 22 Aug 2016 14:33:13 +0000 (10:33 -0400)]
cmd/link/internal/ld: camelCase a buch of snake_case names

I've also unexported a few symbols that weren't used outside the
package.

Updates #16818

Change-Id: I39d9d87b3eec30b88b4a17c1333cfbbfa6b3518f
Reviewed-on: https://go-review.googlesource.com/27468
Run-TryBot: Michael Matloob <matloob@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
8 years agoflag: document that Value.String must work on the zero value
Ian Lance Taylor [Mon, 15 Aug 2016 03:39:30 +0000 (20:39 -0700)]
flag: document that Value.String must work on the zero value

Otherwise flag.PrintDefaults will fail when it tries to determine
whether the default is the zero value.

Fixes #16694.

Change-Id: I253fbf11ffc0a9069fd48c2c3cf3074df53e3a03
Reviewed-on: https://go-review.googlesource.com/27003
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agotime: fix optional fractional seconds range err
Gabriel Russell [Tue, 23 Aug 2016 12:31:26 +0000 (08:31 -0400)]
time: fix optional fractional seconds range err

The optional fractional seconds overrides any range error
from the second parsing. Instead don't look for optional fractional
seconds if a range error has occured.

Change-Id: I27e0a2432740f6753668bd8833e48b9495bc4036
Reviewed-on: https://go-review.googlesource.com/27590
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agopath/filepath: use testenv.MustHaveSymlink to simplify symlink tests
Hiroshi Ioka [Tue, 23 Aug 2016 13:59:27 +0000 (22:59 +0900)]
path/filepath: use testenv.MustHaveSymlink to simplify symlink tests

Cleanup test code for symbolic links.

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

8 years agoos: use testenv.MustHaveSymlink to simplify symlink tests
Hiroshi Ioka [Tue, 23 Aug 2016 13:21:49 +0000 (22:21 +0900)]
os: use testenv.MustHaveSymlink to simplify symlink tests

Cleanup test code for symbolic links.

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

8 years agotest: add test case that gccgo miscompiled
Ian Lance Taylor [Thu, 21 Jul 2016 22:31:56 +0000 (15:31 -0700)]
test: add test case that gccgo miscompiled

Change-Id: I384eac632a4a87c12977e56a7d7bad7614305c51
Reviewed-on: https://go-review.googlesource.com/25143
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agonet: document unimplemented methods and functions
Mikio Hara [Sun, 21 Aug 2016 20:52:15 +0000 (05:52 +0900)]
net: document unimplemented methods and functions

Fixes #16802.

Change-Id: I41be7bb4e21e3beaa2136ee69771b0f455b2a7c6
Reviewed-on: https://go-review.googlesource.com/27417
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agonet: fix typo in error message of TCPConn.ReadFrom
Mikio Hara [Tue, 26 Jul 2016 03:22:45 +0000 (12:22 +0900)]
net: fix typo in error message of TCPConn.ReadFrom

On some error when using io.Copy with TCPConn, it displays an error
correlation like the following:

read tcp 192.0.2.1:1111->192.0.2.2:2222: read tcp [2001:db8::2]:2222->[2001:db8::3]:3333 read: connection reset by peer

the correlation "some error on reading after reading operation" looks a
bit confusing because the operation on the ReadFrom method of TCPConn is
actually "writing after reading." To clarify and avoid confusion, this
change sets "readfrom" to the Op field of outer-most OpError instead of
"read."

Change-Id: I6bf4e2e7247143fa54bbcf9cef7a8ae1ede1b35c
Reviewed-on: https://go-review.googlesource.com/25220
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agoruntime: remove unused function in test
Ian Lance Taylor [Fri, 8 Jul 2016 04:01:21 +0000 (21:01 -0700)]
runtime: remove unused function in test

Change-Id: I43f14cdd9eb4a1d5471fc88c1b4759ceb2c674cf
Reviewed-on: https://go-review.googlesource.com/24817
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agoruntime/cgo: add tsan acquire/release around setenv/unsetenv
Ian Lance Taylor [Tue, 2 Aug 2016 18:42:53 +0000 (11:42 -0700)]
runtime/cgo: add tsan acquire/release around setenv/unsetenv

Change-Id: Iabb25e97714d070c31c657559a97a3bfc979da18
Reviewed-on: https://go-review.googlesource.com/25403
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agodebug/macho: fix comment on Section64
Michael Matloob [Tue, 23 Aug 2016 12:17:58 +0000 (08:17 -0400)]
debug/macho: fix comment on Section64

Change-Id: I7c809ec385b56ebb2ec784a1479d466df6ab4d1a
Reviewed-on: https://go-review.googlesource.com/27565
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/compile: use two tables for table-driven map inserts
Josh Bleecher Snyder [Mon, 16 May 2016 20:56:15 +0000 (13:56 -0700)]
cmd/compile: use two tables for table-driven map inserts

This enables better packing when key and value
types have different alignments.

Cuts 57k off cmd/go.

Change-Id: Ifdd125264caccd7852d622382c94e4689e757978
Reviewed-on: https://go-review.googlesource.com/26669
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
8 years agodoc: add note about CL 24180 to go1.8.txt
Ian Lance Taylor [Tue, 23 Aug 2016 13:14:31 +0000 (06:14 -0700)]
doc: add note about CL 24180 to go1.8.txt

Change-Id: Ie2bef1c181a49d7a02ed8068894d2bd81fc5bafa
Reviewed-on: https://go-review.googlesource.com/27566
Reviewed-by: Ian Lance Taylor <iant@golang.org>
8 years agocmd/go, cmd/link: build c-archive as position independent on ELF
Ian Lance Taylor [Thu, 16 Jun 2016 19:59:09 +0000 (12:59 -0700)]
cmd/go, cmd/link: build c-archive as position independent on ELF

This permits people to use -buildmode=c-archive to produce an archive
file that can be included in a PIE or shared library.

Change-Id: Ie340ee2f08bcff4f6fd1415f7d96d51ee3a7c9a1
Reviewed-on: https://go-review.googlesource.com/24180
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
8 years agoruntime: add missing race and msan checks to reflect functions
Ian Lance Taylor [Wed, 6 Jul 2016 22:30:33 +0000 (15:30 -0700)]
runtime: add missing race and msan checks to reflect functions

Add missing race and msan checks to reflect.typedmmemove and
reflect.typedslicecopy. Missing these checks caused the race detector
to miss races and caused msan to issue false positive errors.

Fixes #16281.

Change-Id: I500b5f92bd68dc99dd5d6f297827fd5d2609e88b
Reviewed-on: https://go-review.googlesource.com/24760
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
8 years agocmd/link: don't record interpreter in flagInterpreter
Ian Lance Taylor [Tue, 23 Aug 2016 05:29:24 +0000 (22:29 -0700)]
cmd/link: don't record interpreter in flagInterpreter

Keep flagInterpreter unchanged after flag parsing. This lets us replace
flagInterpreterSet with flagInterpreter != "".

Change-Id: Ifd2edbb2ce0011e97276ca18281b8ffbabde1c50
Reviewed-on: https://go-review.googlesource.com/27563
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agonet: fix a typo
Mikio Hara [Mon, 22 Aug 2016 06:02:59 +0000 (15:02 +0900)]
net: fix a typo

Change-Id: I29fadde646095fa8507f239a339857bf53172c14
Reviewed-on: https://go-review.googlesource.com/27418
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agotime: load time zones from the system tzdata file on Android
Elias Naur [Mon, 27 Jun 2016 19:38:04 +0000 (21:38 +0200)]
time: load time zones from the system tzdata file on Android

Android timezones are in a packed format, different from the separate
files of a regular Unix system. This CL contain the necessary code to
parse the packed tzdata file and extract time zones from it. It also
adds a basic test to ensure the new parser works.

Fixes #13581

Change-Id: Idebe73726c3d4c2de89dd6ae1d7d19f975207500
Reviewed-on: https://go-review.googlesource.com/24494
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

8 years agoruntime: Use clock_gettime to get current time on ppc64x
Carlos Eduardo Seo [Wed, 10 Aug 2016 18:02:02 +0000 (15:02 -0300)]
runtime: Use clock_gettime to get current time on ppc64x

Fetch the current time in nanoseconds, not microseconds, by using
clock_gettime rather than gettimeofday.

Updates #11222

Change-Id: I1c2c1b88f80ae82002518359436e19099061c6fb
Reviewed-on: https://go-review.googlesource.com/26790
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com>
Reviewed-by: Minux Ma <minux@golang.org>
8 years agointernal/testenv: add HasSymlink/MustHaveSymlink
Hiroshi Ioka [Thu, 18 Aug 2016 10:07:59 +0000 (19:07 +0900)]
internal/testenv: add HasSymlink/MustHaveSymlink

os package and path/filepath package have duplicated code for
checking symlink supports in test code.
This CL tries to simplify such test code.

Change-Id: I0371488337f5e951eca699852daab9ccb16ddd62
Reviewed-on: https://go-review.googlesource.com/27331
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
8 years agonet/http: if context is canceled, return its error
Ian Lance Taylor [Fri, 15 Jul 2016 22:30:53 +0000 (15:30 -0700)]
net/http: if context is canceled, return its error

This permits the error message to distinguish between a context that was
canceled and a context that timed out.

Updates #16381.

Change-Id: I3994b98e32952abcd7ddb5fee08fa1535999be6d
Reviewed-on: https://go-review.googlesource.com/24978
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: tidy up switch case expansion
Josh Bleecher Snyder [Wed, 25 May 2016 21:10:01 +0000 (14:10 -0700)]
cmd/compile: tidy up switch case expansion

No functional changes.

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

8 years agocmd/compile: simplify constant switch case sorting
Josh Bleecher Snyder [Fri, 17 Jun 2016 21:50:39 +0000 (14:50 -0700)]
cmd/compile: simplify constant switch case sorting

This sort is now only reachable for constant clauses
for a non-interface switch expression value.

Refactor a bit so that the few tests that remain
are concise and easy to read.

Add a test that string length takes priority
over built-in string order.

Change-Id: Iedaa11ff77049d5ad1bf14f54cbb8c3411d589a7
Reviewed-on: https://go-review.googlesource.com/26767
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>