aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-03-08[release-branch.go1.8] crypto/tls: make Config.Clone also clone the ↵Mike Danese
GetClientCertificate field Using GetClientCertificate with the http client is currently completely broken because inside the transport we clone the tls.Config and pass it off to the tls.Client. Since tls.Config.Clone() does not pass forward the GetClientCertificate field, GetClientCertificate is ignored in this context. Fixes #19264 Change-Id: Ie214f9f0039ac7c3a2dab8ffd14d30668bdb4c71 Signed-off-by: Mike Danese <mikedanese@google.com> Reviewed-on: https://go-review.googlesource.com/37541 Reviewed-by: Filippo Valsorda <hi@filippo.io> Reviewed-by: Adam Langley <agl@golang.org> Run-TryBot: Adam Langley <agl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> (cherry picked from commit 87649d32ad16a9a0b7bd5dbd1c124b2032a270f1) Reviewed-on: https://go-review.googlesource.com/37946 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Tom Bergan <tombergan@google.com>
2017-03-03[release-branch.go1.8] cmd/compile: do not fold offset into load/store for ↵Cherry Zhang
args on ARM64 Args may be not at 8-byte aligned offset to SP. When the stack frame is large, folding the offset of args may cause large unaligned offsets that does not fit in a machine instruction on ARM64. Therefore disable folding offsets for args. This has small performance impact (see below). A better fix would be letting the assembler backend fix up the offset by loading it into a register if it doesn't fit into an instruction. And the compiler can simply generate large load/stores with offset. Since in most of the cases the offset is aligned or the stack frame is small, it can fit in an instruction and no fixup is needed. But this is too complicated for Go 1.8. name old time/op new time/op delta BinaryTree17-8 8.30s ± 0% 8.31s ± 0% ~ (p=0.579 n=10+10) Fannkuch11-8 6.14s ± 0% 6.18s ± 0% +0.53% (p=0.000 n=9+10) FmtFprintfEmpty-8 117ns ± 0% 117ns ± 0% ~ (all equal) FmtFprintfString-8 196ns ± 0% 197ns ± 0% +0.72% (p=0.000 n=10+10) FmtFprintfInt-8 204ns ± 0% 205ns ± 0% +0.49% (p=0.000 n=9+10) FmtFprintfIntInt-8 302ns ± 0% 307ns ± 1% +1.46% (p=0.000 n=10+10) FmtFprintfPrefixedInt-8 329ns ± 2% 326ns ± 0% ~ (p=0.083 n=10+10) FmtFprintfFloat-8 540ns ± 0% 542ns ± 0% +0.46% (p=0.000 n=8+7) FmtManyArgs-8 1.20µs ± 1% 1.19µs ± 1% -1.02% (p=0.000 n=10+10) GobDecode-8 17.3ms ± 1% 17.8ms ± 0% +2.75% (p=0.000 n=10+7) GobEncode-8 15.3ms ± 1% 15.4ms ± 0% +0.57% (p=0.004 n=9+10) Gzip-8 789ms ± 0% 803ms ± 0% +1.78% (p=0.000 n=9+10) Gunzip-8 128ms ± 0% 130ms ± 0% +1.73% (p=0.000 n=10+9) HTTPClientServer-8 202µs ± 6% 201µs ±10% ~ (p=0.739 n=10+10) JSONEncode-8 42.0ms ± 0% 42.1ms ± 0% +0.19% (p=0.028 n=10+9) JSONDecode-8 159ms ± 0% 161ms ± 0% +1.05% (p=0.000 n=9+10) Mandelbrot200-8 10.1ms ± 0% 10.1ms ± 0% -0.07% (p=0.000 n=10+9) GoParse-8 8.46ms ± 1% 8.61ms ± 1% +1.77% (p=0.000 n=10+10) RegexpMatchEasy0_32-8 227ns ± 1% 226ns ± 0% -0.35% (p=0.001 n=10+9) RegexpMatchEasy0_1K-8 1.63µs ± 0% 1.63µs ± 0% -0.13% (p=0.000 n=10+9) RegexpMatchEasy1_32-8 250ns ± 0% 249ns ± 0% -0.40% (p=0.001 n=8+9) RegexpMatchEasy1_1K-8 2.07µs ± 0% 2.08µs ± 0% +0.05% (p=0.027 n=9+9) RegexpMatchMedium_32-8 350ns ± 0% 350ns ± 0% ~ (p=0.412 n=9+8) RegexpMatchMedium_1K-8 104µs ± 0% 104µs ± 0% +0.31% (p=0.000 n=10+7) RegexpMatchHard_32-8 5.82µs ± 0% 5.82µs ± 0% ~ (p=0.937 n=9+9) RegexpMatchHard_1K-8 176µs ± 0% 176µs ± 0% +0.03% (p=0.000 n=9+8) Revcomp-8 1.36s ± 1% 1.37s ± 1% ~ (p=0.218 n=10+10) Template-8 151ms ± 1% 156ms ± 1% +3.21% (p=0.000 n=10+10) TimeParse-8 737ns ± 0% 758ns ± 2% +2.74% (p=0.000 n=10+10) TimeFormat-8 801ns ± 2% 789ns ± 1% -1.51% (p=0.000 n=10+10) [Geo mean] 142µs 143µs +0.50% Fixes #19137. Change-Id: Ib8a21ea98c0ffb2d282a586535b213cc163e1b67 Reviewed-on: https://go-review.googlesource.com/37251 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com> (cherry picked from commit 6464e5dc4b84a4348e6698f97c5bfc462a0e3a5e) Reviewed-on: https://go-review.googlesource.com/37719 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-03-03[release-branch.go1.8] cmd/compile: check both syms when folding address ↵Cherry Zhang
into load/store on ARM64 The rules for folding addresses into load/stores checks sym1 is not on stack (because the stack offset is not known at that point). But sym1 could be nil, which invalidates the check. Check merged sym instead. Fixes #19137. Change-Id: I8574da22ced1216bb5850403d8f08ec60a8d1005 Reviewed-on: https://go-review.googlesource.com/37145 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com> (cherry picked from commit 3557d546090c7fedd69562c88d20767397de835d) Reviewed-on: https://go-review.googlesource.com/37214
2017-03-03[release-branch.go1.8] cmd/compile: add zero-extension before right shift ↵Cherry Zhang
when lowering Lrot on ARM Fixes #19270. Change-Id: Ie7538ff8465138a8bc02572e84cf5d00de7bbdd1 Reviewed-on: https://go-review.googlesource.com/37718 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com>
2017-03-02[release-branch.go1.8] cmd/compile: fix merging of s390x conditional moves ↵Michael Munday
into branch conditions A type conversion inserted between MOVD{LT,LE,GT,GE,EQ,NE} and CMPWconst by CL 36256 broke the rewrite rule designed to merge the two. This results in simple for loops (e.g. for i := 0; i < N; i++ {}) emitting two comparisons instead of one, plus a conditional move. This CL explicitly types the input to CMPWconst so that the type conversion can be omitted. It also adds a test to check that conditional moves aren't emitted for loops with 'less than' conditions (i.e. i < N) on s390x. Fixes #19227. Change-Id: I44958eebf6c74c5819b2a9511caf3c47c20fbf45 Reviewed-on: https://go-review.googlesource.com/37536 Run-TryBot: Michael Munday <munday@ca.ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bill O'Farrell <billotosyr@gmail.com> Reviewed-by: Cherry Zhang <cherryyz@google.com>
2017-03-02[release-branch.go1.8] cmd/compile: remove unnecessary type conversions on s390xMichael Munday
Some rules insert MOVDreg ops to ensure that type changes are kept. If there is no type change (or the input is constant) then the MOVDreg can be omitted, allowing further optimization. Reduces the size of the .text section in the asm tool by ~33KB. For #19227. Change-Id: I0f7b40d8dbcda73bca96eb6d2bf13f9ffa88f4b6 Reviewed-on: https://go-review.googlesource.com/37535 Run-TryBot: Michael Munday <munday@ca.ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
2017-02-27[release-branch.go1.8] runtime: avoid O(n) semaphore list walk in contention ↵Russ Cox
profiling Contention profiling is off by default. If you turn it on, it has the unfortunate effect of making the wakeup on a contention mutex go from O(1) to O(n). Change it back to O(1). This is already fixed in essentially the same way on master; master also contains some fixes for the non-profiling code paths. Possible for Go 1.8.1. Change-Id: Iaa644c06e20ca28da4dfa348b7211eedb657e0ba Reviewed-on: https://go-review.googlesource.com/37341 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-02-27[dev.typealias] set version to go1.8.typealias, including new build tagRuss Cox
This will keep toolchains built on this branch from pretending to support whatever new things are coming in Go 1.9. Change-Id: I3e0b623be57c3ad7e01f32abf148d181e3dc1fec Reviewed-on: https://go-review.googlesource.com/37510 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-02-23[release-branch.go1.8] website: mention go1.8 in project pageAlberto Donizetti
Fixes #19253 Change-Id: Ia473f51bfe4cf42cf64938993a81d9b1dbc2594d Reviewed-on: https://go-review.googlesource.com/37433 Reviewed-by: Chris Broadfoot <cbro@golang.org> Reviewed-on: https://go-review.googlesource.com/37398
2017-02-23[release-branch.go1.8] doc: fix broken link in go1.8.htmlBrad Fitzpatrick
Fixes #19244 Change-Id: Ia6332941b229c83d6fd082af49f31003a66b90db Reviewed-on: https://go-review.googlesource.com/37388 Reviewed-by: Robert Griesemer <gri@golang.org> Reviewed-on: https://go-review.googlesource.com/37397 Reviewed-by: Chris Broadfoot <cbro@golang.org>
2017-02-16[dev.typealias] all: merge go1.8 into dev.typealiasRuss Cox
This should provide a way for people who want to try "Go 1.8 with type aliases" to do so. Removed go1.8 VERSION file as part of merge. Change-Id: I60d79439677d9980de7b5575e2e6cb9c23be02b6
2017-02-16[release-branch.go1.8] go1.8go1.8Chris Broadfoot
Change-Id: If1e38f02db86449abd4c8a57988d9825b1cf2511 Reviewed-on: https://go-review.googlesource.com/37132 Run-TryBot: Chris Broadfoot <cbro@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-02-16[release-branch.go1.8] doc: document go1.8Chris Broadfoot
Change-Id: Ie2144d001c6b4b2293d07b2acf62d7e3cd0b46a7 Reviewed-on: https://go-review.googlesource.com/37130 Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-on: https://go-review.googlesource.com/37131
2017-02-16[release-branch.go1.8] runtime: do not call wakep from enlistWorker, to ↵Russ Cox
avoid possible deadlock We have seen one instance of a production job suddenly spinning to 100% CPU and becoming unresponsive. In that one instance, a SIGQUIT was sent after 328 minutes of spinning, and the stacks showed a single goroutine in "IO wait (scan)" state. Looking for things that might get stuck if a goroutine got stuck in scanning a stack, we found that injectglist does: lock(&sched.lock) var n int for n = 0; glist != nil; n++ { gp := glist glist = gp.schedlink.ptr() casgstatus(gp, _Gwaiting, _Grunnable) globrunqput(gp) } unlock(&sched.lock) and that casgstatus spins on gp.atomicstatus until the _Gscan bit goes away. Essentially, this code locks sched.lock and then while holding sched.lock, waits to lock gp.atomicstatus. The code that is doing the scan is: if castogscanstatus(gp, s, s|_Gscan) { if !gp.gcscandone { scanstack(gp, gcw) gp.gcscandone = true } restartg(gp) break loop } More analysis showed that scanstack can, in a rare case, end up calling back into code that acquires sched.lock. For example: runtime.scanstack at proc.go:866 calls runtime.gentraceback at mgcmark.go:842 calls runtime.scanstack$1 at traceback.go:378 calls runtime.scanframeworker at mgcmark.go:819 calls runtime.scanblock at mgcmark.go:904 calls runtime.greyobject at mgcmark.go:1221 calls (*runtime.gcWork).put at mgcmark.go:1412 calls (*runtime.gcControllerState).enlistWorker at mgcwork.go:127 calls runtime.wakep at mgc.go:632 calls runtime.startm at proc.go:1779 acquires runtime.sched.lock at proc.go:1675 This path was found with an automated deadlock-detecting tool. There are many such paths but they all go through enlistWorker -> wakep. The evidence strongly suggests that one of these paths is what caused the deadlock we observed. We're running those jobs with GOTRACEBACK=crash now to try to get more information if it happens again. Further refinement and analysis shows that if we drop the wakep call from enlistWorker, the remaining few deadlock cycles found by the tool are all false positives caused by not understanding the effect of calls to func variables. The enlistWorker -> wakep call was intended only as a performance optimization, it rarely executes, and if it does execute at just the wrong time it can (and plausibly did) cause the deadlock we saw. Comment it out, to avoid the potential deadlock. Fixes #19112. Unfixes #14179. Change-Id: I6f7e10b890b991c11e79fab7aeefaf70b5d5a07b Reviewed-on: https://go-review.googlesource.com/37093 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Austin Clements <austin@google.com> Reviewed-on: https://go-review.googlesource.com/37022 TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-02-15[release-branch.go1.8] doc: update Code of Conduct wording and scopeSarah Adams
This change removes the punitive language and anonymous reporting mechanism from the Code of Conduct document. Read on for the rationale. More than a year has passed since the Go Code of Conduct was introduced. In that time, there have been a small number (<30) of reports to the Working Group. Some reports we handled well, with positive outcomes for all involved. A few reports we handled badly, resulting in hurt feelings and a bad experience for all involved. On reflection, the reports that had positive outcomes were ones where the Working Group took the role of advisor/facilitator, listening to complaints and providing suggestions and advice to the parties involved. The reports that had negative outcomes were ones where the subject of the report felt threatened by the Working Group and Code of Conduct. After some discussion among the Working Group, we saw that we are most effective as facilitators, rather than disciplinarians. The various Go spaces already have moderators; this change to the CoC acknowledges their authority and places the group in a purely advisory role. If an incident is reported to the group we may provide information to or make a suggestion the moderators, but the Working Group need not (and should not) have any authority to take disciplinary action. In short, we want it to be clear that the Working Group are here to help resolve conflict, period. The second change made here is the removal of the anonymous reporting mechanism. To date, the quality of anonymous reports has been low, and with no way to reach out to the reporter for more information there is often very little we can do in response. Removing this one-way reporting mechanism strengthens the message that the Working Group are here to facilitate a constructive dialogue. Change-Id: Iee52aff5446accd0dae0c937bb3aa89709ad5fb4 Reviewed-on: https://go-review.googlesource.com/37014 Reviewed-by: Andrew Gerrand <adg@golang.org> Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-on: https://go-review.googlesource.com/37040 Reviewed-by: Chris Broadfoot <cbro@golang.org>
2017-02-15[release-branch.go1.8] encoding/xml: fix incorrect indirect code in ↵Russ Cox
chardata, comment, innerxml fields The new tests in this CL have been checked against Go 1.7 as well and all pass in Go 1.7, with the one exception noted in a comment (an intentional change to omitempty already present before this CL). CL 15684 made the intentional change to omitempty. This CL fixes bugs introduced along the way. Most of these are corner cases that are arguably not that important, but they've always worked all the way back to Go 1, and someone cared enough to file #19063. The most significant problem found while adding tests is that in the case of a nil *string field with `xml:",chardata"`, the existing code silently stops processing not just that field but the entire remainder of the struct. Even if #19063 were not worth fixing, this chardata bug would be. Fixes #19063. Change-Id: I318cf8f9945e1a4615982d9904e109fde577ebf9 Reviewed-on: https://go-review.googlesource.com/36954 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Daniel Martí <mvdan@mvdan.cc> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> (cherry picked from commit 72aa757dddad7e915f4faad87aacf8010d91561b) Reviewed-on: https://go-review.googlesource.com/37016 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2017-02-13[release-branch.go1.8] database/sql: convert test timeouts to explicit waits ↵Daniel Theophanes
with checks When testing context cancelation behavior do not rely on context timeouts. Use explicit checks in all such tests. In closeDB convert the simple check for zero open conns with a wait loop for zero open conns. Fixes #19024 Fixes #19041 Change-Id: Iecfcc4467e91249fceb21ffd1f7c62c58140d8e9 Reviewed-on: https://go-review.googlesource.com/36902 Run-TryBot: Daniel Theophanes <kardianos@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-on: https://go-review.googlesource.com/36917 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Daniel Theophanes <kardianos@gmail.com>
2017-02-10[release-branch.go1.8] reflect: clear ptrToThis in Ptr when allocating ↵Michael Hudson-Doyle
result on heap Otherwise, calling PtrTo on the result will fail. Fixes #19003 Change-Id: I8d7d1981a5d0417d5aee52740469d71e90734963 Reviewed-on: https://go-review.googlesource.com/36731 Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-on: https://go-review.googlesource.com/36718 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-02-10[release-branch.go1.8] database/sql: ensure driverConns are closed if not ↵Daniel Theophanes
returned to pool Previously if a connection was requested but timed out during the request and when acquiring the db.Lock the connection request is fulfilled and the request is unable to be returned to the connection pool, then then driver connection would not be closed. No tests were added or modified because I was unable to determine how to trigger this situation without something invasive. Change-Id: I9d4dc680e3fdcf63d79d212174a5b8b313f363f1 Reviewed-on: https://go-review.googlesource.com/36641 Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-on: https://go-review.googlesource.com/36714 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-02-10[release-branch.go1.8] database/sql: do not exhaust connection pool on conn ↵Daniel Theophanes
request timeout Previously if a context was canceled while it was waiting for a connection request, that connection request would leak. To prevent this remove the pending connection request if the context is canceled and ensure no connection has been sent on the channel. This requires a change to how the connection requests are represented in the DB. Fixes #18995 Change-Id: I9a274b48b8f4f7ca46cdee166faa38f56d030852 Reviewed-on: https://go-review.googlesource.com/36563 Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-on: https://go-review.googlesource.com/36613 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-02-09[release-branch.go1.8] database/sql: record the context error in Rows if ↵Daniel Theophanes
canceled Previously it was intended that Rows.Scan would return an error and Rows.Err would return nil. This was problematic because drivers could not differentiate between a normal Rows.Close or a context cancel close. The alternative is to require drivers to return a Scan to return an error if the driver is closed while there are still rows to be read. This is currently not how several drivers currently work and may be difficult to detect when there are additional rows. At the same time guard the the Rows.lasterr and prevent a close while a Rows operation is active. For the drivers that do not have Context methods, do not check for context cancelation after the operation, but before for any operation that may modify the database state. Fixes #18961 Change-Id: I49a25318ecd9f97a35d5b50540ecd850c01cfa5e Reviewed-on: https://go-review.googlesource.com/36485 Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-on: https://go-review.googlesource.com/36614 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-02-08[release-branch.go1.8] crypto/x509: check for new tls-ca-bundle.pem lastRuss Cox
We added CentOS 7's /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem to the list in response to #17549 - not being able to find any certs otherwise. Now we have #18813, where CentOS 6 apparently has both that file and /etc/pki/tls/certs/ca-bundle.crt, and the latter is complete while the former is not. Moving the new CentOS 7 file to the bottom of the list should fix both problems: the CentOS 7 system that didn't have any of the other files in the list will still find the new one, and existing systems will still keep using what they were using instead of preferring the new path that may or may not be complete on some systems. Fixes #18813. Change-Id: I5275ab67424b95e7210e14938d3e986c8caee0ba Reviewed-on: https://go-review.googlesource.com/36429 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Adam Langley <agl@golang.org> Reviewed-on: https://go-review.googlesource.com/36530 TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-02-07[release-branch.go1.8] cmd/go, go/build: better defenses against GOPATH=GOROOTRuss Cox
Fixes #18863. Change-Id: I0723563cd23728b0d43ebcc25979bf8d21e2a72c Reviewed-on: https://go-review.googlesource.com/36427 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-on: https://go-review.googlesource.com/36536 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-02-07[release-branch.go1.8] cmd/compile: do not use "oaslit" for globalCherry Zhang
The compiler did not emit write barrier for assigning global with struct literal, like global = T{} where T contains pointer. The relevant code path is: walkexpr OAS var_ OSTRUCTLIT oaslit anylit OSTRUCTLIT walkexpr OAS var_ nil return without adding write barrier return true break (without adding write barrier) This CL makes oaslit not apply to globals. See also CL https://go-review.googlesource.com/c/36355/ for an alternative fix. The downside of this is that it generates static data for zeroing struct now. Also this only covers global. If there is any lurking bug with implicit zeroing other than globals, this doesn't fix. Fixes #18956. Change-Id: Ibcd27e4fae3aa38390ffa94a32a9dd7a802e4b37 Reviewed-on: https://go-review.googlesource.com/36410 Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> (cherry picked from commit 160914e33ca6521d74297291d801062cc44d794d) Reviewed-on: https://go-review.googlesource.com/36531
2017-02-07[release-branch.go1.8] cmd/compile/internal/syntax: avoid follow-up error ↵Robert Griesemer
for incorrect if statement This is a follow-up on https://go-review.googlesource.com/36470 and leads to a more stable fix. The above CL relied on filtering of multiple errors on the same line to avoid more than one error for an `if` statement of the form `if a := 10 {}`. This CL avoids the secondary error ("missing condition in if statement") in the first place. For #18915. Change-Id: I8517f485cc2305965276c17d8f8797d61ef9e999 Reviewed-on: https://go-review.googlesource.com/36479 TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-on: https://go-review.googlesource.com/36424 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
2017-02-07[release-branch.go1.8] cmd/compile/internal/syntax: make a parser error "1.7 ↵Robert Griesemer
compliant" For code such as if a := 10 { ... the 1.7 compiler reported a := 10 used as value while the 1.8 compiler reported invalid condition, tag, or type switch guard Changed the error message to match the 1.7 compiler. Fixes #18915. Change-Id: I01308862e461922e717f9f8295a9db53d5a914eb Reviewed-on: https://go-review.googlesource.com/36470 Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-on: https://go-review.googlesource.com/36422 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
2017-02-07[release-branch.go1.8] cmd/link: use external linking for PIE by defaultDavid Crawshaw
Now `go test -buildmode=pie std -short` passes on linux/amd64. Updates #18968 Change-Id: Ide21877713e00edc64c1700c950016d6bff8de0e Reviewed-on: https://go-review.googlesource.com/36417 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-on: https://go-review.googlesource.com/36421 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org> Reviewed-by: Minux Ma <minux@golang.org>
2017-02-07[release-branch.go1.8] doc: remove inactive members of the CoC working groupAndrew Gerrand
Dave and Jason have moved on to other things. Change-Id: I702d11bedfab1f47a33679a48c2309f49021229e Reviewed-on: https://go-review.googlesource.com/36450 Reviewed-by: Dave Cheney <dave@cheney.net> Reviewed-on: https://go-review.googlesource.com/36474 Reviewed-by: Andrew Gerrand <adg@golang.org>
2017-02-06[release-branch.go1.8] vendor/golang.org/x/crypto/curve25519: avoid loss of ↵Russ Cox
R15 in -dynlink mode Original code fixed in https://go-review.googlesource.com/#/c/36359/. Fixes #18820. Change-Id: I060e6c9d0e312b4fd5d0674aff131055bf5cf61d Reviewed-on: https://go-review.googlesource.com/36412 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Adam Langley <agl@golang.org> Reviewed-on: https://go-review.googlesource.com/36414 Reviewed-by: Austin Clements <austin@google.com>
2017-02-06[release-branch.go1.8] cmd/compile: do not fold large offset on ARM64Cherry Zhang
Fixes #18933. Change-Id: I1ab524fdca006100ec6af572065b496f68d6a5c3 Reviewed-on: https://go-review.googlesource.com/36413 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-02-06[release-branch.go1.8] cmd/compile: fix type propagation through s390x SSA rulesMichael Munday
This CL fixes two issues: 1. Load ops were initially always lowered to unsigned loads, even for signed types. This was fine by itself however LoadReg ops (used to re-load spilled values) were lowered to signed loads for signed types. This meant that spills could invalidate optimizations that assumed the original unsigned load. 2. Types were not always being maintained correctly through rules designed to eliminate unnecessary zero and sign extensions. Updates #18906 and fixes #18958 (backport of CL 36256 to 1.8). Change-Id: Id44953b0f644cad047e8474edbd24e8a344ca9a7 Reviewed-on: https://go-review.googlesource.com/36350 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-02-02[release-branch.go1.8] testing: stop timeout-timer after running testsAlberto Donizetti
Fixes #18845 Fixes #18870 (Go 1.8 backport) Change-Id: Icdc3e2067807781e42f2ffc94d1824aed94d3713 Reviewed-on: https://go-review.googlesource.com/35956 Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> (cherry picked from commit 7d8bfdde453445affb50fcaeacc050938ec98467) Reviewed-on: https://go-review.googlesource.com/36125
2017-02-01[release-branch.go1.8] doc: mention SHA-256 CBC suites are off by defaultFilippo Valsorda
Change-Id: I82c41bd1d82adda457ddb5dd08caf0647905da22 Reviewed-on: https://go-review.googlesource.com/36091 Reviewed-by: Matt Layher <mdlayher@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> (cherry picked from commit de479267ef9db0911dac68e94d75186313bae11d) Reviewed-on: https://go-review.googlesource.com/36130
2017-01-31[dev.typealias] spec: use term 'embedded field' rather than 'anonymous field'Robert Griesemer
First steps towards defining type aliases in the spec. This is a nomenclature clarification, not a language change. The spec used all three terms 'embedded type', 'anonymous field', and 'embedded field'. Users where using the terms inconsistently. The notion of an 'anonymous' field was always misleading since they always had a de-facto name. With type aliases that name becomes even more important because we may have different names for the same type. Use the term 'embedded field' consistently and remove competing terminology. For #18130. Change-Id: I2083bbc85788cab0b2e2cb1ff58b2f979491f001 Reviewed-on: https://go-review.googlesource.com/35108 Reviewed-by: Alan Donovan <adonovan@google.com> Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-by: Rob Pike <r@golang.org>
2017-01-31[release-branch.go1.8] all: final merge of master into Go 1.8 release branchRuss Cox
After this, we will merge some of the dev work like type aliases and inlining into master, so any additional changes for the Go 1.8 release will need to be cherry-picked, not merged. 3e55059f cmd/dist: really skip the testsanitizers tests on Android 09496599 runtime: add explicit (void) in C to avoid GCC 7 problem 4cffe2b6 cmd/dist: use the target GOOS to skip the test for issue 18153 6bdb0c11 doc: update go1.8 release notes after TxOptions change 09096bd3 cmd/go: update alldocs after CL 35150 96ea0918 cmd/compile: use CMPWU for 32-bit or smaller unsigned Geq on ppc64{,le} 21a8db1c doc: document go1.7.5 Change-Id: I9e6a30c3fac43d4d4d15e93054ac00964c3ee958
2017-01-30cmd/dist: really skip the testsanitizers tests on AndroidElias Naur
The test.bash script in misc/cgo/testsanitizers use GOOS, not GOHOSTOS. Fix the dist check from gohostos to goos accordingly. The error was masked on the builders because they run on a darwin host where the sanitizers tests never ran. With this change, the Android test suite completes successfully on Android/amd64. Change-Id: Id7690429f78c6ac7a26fc9118d913b719b565bb2 Reviewed-on: https://go-review.googlesource.com/35959 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Elias Naur <elias.naur@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-01-30runtime: add explicit (void) in C to avoid GCC 7 problemIan Lance Taylor
This avoids errors like ./traceback.go:80:2: call of non-function C.f1 I filed https://gcc.gnu.org/PR79289 for the GCC problem. I think this is a bug in GCC, and it may be fixed before the final GCC 7 release. This CL is correct either way. Fixes #18855. Change-Id: I0785a7b7c5b1d0ca87b454b5eca9079f390fcbd4 Reviewed-on: https://go-review.googlesource.com/35919 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org>
2017-01-29cmd/dist: use the target GOOS to skip the test for issue 18153Elias Naur
Fixes (skips) the test on Android, where stdout/stderr are not terminals. Updates #18153 Change-Id: Ieca65150362a5c423747ad751e00f76f0b890746 Reviewed-on: https://go-review.googlesource.com/35957 Run-TryBot: Elias Naur <elias.naur@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-01-29doc: update go1.8 release notes after TxOptions changeDaniel Theophanes
Missed the release notes when updating the sql API. Fixes #18825 Change-Id: I89056d46939ad4fc99590f3434d2881f5764e1b6 Reviewed-on: https://go-review.googlesource.com/35915 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-01-28cmd/go: update alldocs after CL 35150Alberto Donizetti
Author of CL 35150 forgot to run mkalldocs.sh to update the autogenerated alldocs.go Change-Id: Ib824562db6044702456a221a8c6f9af412927a98 Reviewed-on: https://go-review.googlesource.com/35952 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-01-27cmd/compile: use CMPWU for 32-bit or smaller unsigned Geq on ppc64{,le}Michael Munday
Fixes #18808. Change-Id: I49b266380b9d6804c9f6563ebac9c7c0e05f37f6 Reviewed-on: https://go-review.googlesource.com/35890 Run-TryBot: Michael Munday <munday@ca.ibm.com> Reviewed-by: Cherry Zhang <cherryyz@google.com>
2017-01-26[dev.typealias] cmd/compile: avoid false positive cycles from type aliasesMatthew Dempsky
For #18130. Fixes #18640. Change-Id: I26cf1d1b78cca6ef207cc4333f30a9011ef347c9 Reviewed-on: https://go-review.googlesource.com/35831 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
2017-01-26[release-branch.go1.8] go1.8rc3go1.8rc3Chris Broadfoot
Change-Id: Ie306bb5355f56113356fc141f3c1a56872b39f9e Reviewed-on: https://go-review.googlesource.com/35836 Reviewed-by: Chris Broadfoot <cbro@golang.org>
2017-01-26doc: document go1.7.5Chris Broadfoot
Change-Id: Ic8d4e971edebba9412f2e7c3d3c29f296c4977ff Reviewed-on: https://go-review.googlesource.com/35833 Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-01-26[release-branch.go1.8] all: merge master into release-branch.go1.8Chris Broadfoot
78860b2ad2 cmd/go: don't reject ./... matching top-level file outside GOPATH 2b283cedef database/sql: fix race when canceling queries immediately 1cf08182f9 go/printer: fix format with leading comments in composite literal b531eb3062 runtime: reorder modules so main.main comes first 165cfbc409 database/sql: let tests wait for db pool to come to expected state ea73649343 doc: update gccgo docs 1db16711f5 doc: clarify what to do with Go 1.4 when installing from source 3717b429f2 doc: note that plugins are not fully baked 98842cabb6 net/http: don't send body on redirects for 301, 302, 303 when GetBody is set 314180e7f6 net/http: fix a nit aad06da2b9 cmd/link: mark DWARF function symbols as reachable be9dcfec29 doc: mention testing.MainStart signature change a96e117a58 runtime: amd64, use 4-byte ops for memmove of 4 bytes 4cce27a3fa cmd/compile: fix constant propagation through s390x MOVDNE instructions 1be957d703 misc/cgo/test: pass current environment to syscall.Exec ec654e2251 misc/cgo/test: fix test when using GCC 7 256a605faa cmd/compile: don't use nilcheck information until the next block e8d5989ed1 cmd/compile: fix compilebench -alloc ea7d9e6a52 runtime: check for nil g and m in msanread Change-Id: I61d508d4f0efe4b72e7396645c8ad6088d2bfa6e
2017-01-26cmd/go: don't reject ./... matching top-level file outside GOPATHIan Lance Taylor
This unwinds a small part of CL 31668: we now accept "./." in cleanImport. Fixes #18778. Change-Id: Ia7f1fde1cafcea3cc9e0b597a95a0e0bb410a3ed Reviewed-on: https://go-review.googlesource.com/35646 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2017-01-26database/sql: fix race when canceling queries immediatelyDaniel Theophanes
Previously the following could happen, though in practice it would be rare. Goroutine 1: (*Tx).QueryContext begins a query, passing in userContext Goroutine 2: (*Tx).awaitDone starts to wait on the context derived from the passed in context Goroutine 1: (*Tx).grabConn returns a valid (*driverConn) The (*driverConn) passes to (*DB).queryConn Goroutine 3: userContext is canceled Goroutine 2: (*Tx).awaitDone unblocks and calls (*Tx).rollback (*driverConn).finalClose obtains dc.Mutex (*driverConn).finalClose sets dc.ci = nil Goroutine 1: (*DB).queryConn obtains dc.Mutex in withLock ctxDriverPrepare accepts dc.ci which is now nil ctxCriverPrepare panics on the nil ci The fix for this is to guard the Tx methods with a RWLock holding it exclusivly when closing the Tx and holding a read lock when executing a query. Fixes #18719 Change-Id: I37aa02c37083c9793dabd28f7f934a1c5cbc05ea Reviewed-on: https://go-review.googlesource.com/35550 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-01-26go/printer: fix format with leading comments in composite literalRobert Griesemer
This fix is less pervasive than it seems. The only change affecting formatting is on printer.go:760. The remaining changes have no effect on formatting since the value of p.level is ignored except on this specific line. The remaining changes are: - renamed adjBlock to funcBody since that's how it is used - introduced new printer field 'level' tracking the composite literal nesting level - update/restore the composite literal nesting level as needed Fixes #18782. Change-Id: Ie833a9b5a559c4ec0f2eef2c5dc97aa263dca53a Reviewed-on: https://go-review.googlesource.com/35811 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-01-25runtime: reorder modules so main.main comes firstDavid Crawshaw
Modules appear in the moduledata linked list in the order they are loaded by the dynamic loader, with one exception: the firstmoduledata itself the module that contains the runtime. This is not always the first module (when using -buildmode=shared, it is typically libstd.so, the second module). The order matters for typelinksinit, so we swap the first module with whatever module contains the main function. Updates #18729 This fixes the test case extracted with -linkshared, and now go test -linkshared encoding/... passes. However the original issue about a plugin failure is not yet fixed. Change-Id: I9f399ecc3518e22e6b0a350358e90b0baa44ac96 Reviewed-on: https://go-review.googlesource.com/35644 Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-01-25database/sql: let tests wait for db pool to come to expected stateDaniel Theophanes
Slower builders were failing TestQueryContext because the cancel and return to conn pool happens async. TestQueryContext already uses a wait method for this reason. Use the same method for other context tests. Fixes #18759 Change-Id: I84cce697392b867e4ebdfadd38027a06ca14655f Reviewed-on: https://go-review.googlesource.com/35750 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>