- 06 Sep, 2019 18 commits
-
-
Matthew Dempsky authored
This CL detangles the hairy mess that was convlit+defaultlit. In particular, it makes the following changes: 1. convlit1 now follows the standard typecheck behavior of setting "n.Type = nil" if there's an error. Notably, this means for a lot of test cases, we now avoid reporting useless follow-on error messages. For example, after reporting that "1 << s + 1.0" has an invalid shift, we no longer also report that it can't be assigned to string. 2. Previously, assignconvfn had some extra logic for trying to suppress errors from convlit/defaultlit so that it could provide its own errors with better context information. Instead, this extra context information is now passed down into convlit1 directly. 3. Relatedly, this CL also removes redundant calls to defaultlit prior to assignconv. As a consequence, when an expression doesn't make sense for a particular assignment (e.g., assigning an untyped string to an integer), the error messages now say "untyped string" instead of just "string". This is more consistent with go/types behavior. 4. defaultlit2 is now smarter about only trying to convert pairs of untyped constants when it's likely to succeed. This allows us to report better error messages for things like 3+"x"; instead of "cannot convert 3 to string" we now report "mismatched types untyped number and untyped string". Passes toolstash-check. Change-Id: I26822a02dc35855bd0ac774907b1cf5737e91882 Reviewed-on: https://go-review.googlesource.com/c/go/+/187657 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
-
Matthew Dempsky authored
We used to be more aggressive about constant folding in the frontend, handling expressions that the Go spec does not consider constant; e.g., "(*int)(unsafe.Pointer(uintptr(200)))". However, that led to a lot of subtle Go spec conformance issues, so we've since abandoned that effort (CL 151320), leaving SSA to handle these cases instead. As such, the only time we now end up with pointer-typed OLITERALs is when "nil" is implicitly converted to a pointer-typed variable. Instead of representing these OLITERALs with an CTINT of 0, we can just use CTNIL. Saves a few bytes of memory and lines of code. Change-Id: Ibc5c756b992fdc89c3bdaf4fda3aa352e8e2b101 Reviewed-on: https://go-review.googlesource.com/c/go/+/193437 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
-
Matthew Dempsky authored
This reverts commit 2da9c3e0. Reason for revert: while the new error messages are more informative, they're not strictly correct. This CL also conflicts with CL 187657. Change-Id: I1c36cf7e86c2f35ee83a4f98918ee38aa1f59965 Reviewed-on: https://go-review.googlesource.com/c/go/+/193977 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
-
Mihai Borobocea authored
Consistent with the spec's definition of "ordered" and "comparable". Fixes #34147 Change-Id: Id13186df5343588d80eaebfeb23092596a846d51 Reviewed-on: https://go-review.googlesource.com/c/go/+/193840Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Rob Pike <r@golang.org>
-
Matthew Dempsky authored
golang.org/cl/150140 renamed the other Efoo constants to ctxFoo, but forgot about Etype. gorename -from '"cmd/compile/internal/gc".Etype -to ctxType Change-Id: I142dd42ca84a398f8d2316d75ead3331c023b820 Reviewed-on: https://go-review.googlesource.com/c/go/+/193958 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
-
K. "pestophagous" Heller authored
Follow-up to Change-Id: If6e52c59eab438599d641ecf6f110ebafca740a9 This addresses the remaining tech debt on issue 21979. The aforementioned previous CL silenced one of two mostly redundant compiler errors. However, the silenced error was the more expressive error. This CL now imbues the surviving error with the same level of expressiveness as the old semi-redundant error. Fixes #21979 Change-Id: I3273d48c88bbab073fabe53421d801df621ce321 Reviewed-on: https://go-review.googlesource.com/c/go/+/191079 Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
-
Joel Sing authored
Updates #27532 Change-Id: I7ecf5239d6bc49408a2f155d0f5398ee716fd443 Reviewed-on: https://go-review.googlesource.com/c/go/+/193678Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
Yuval Pavel Zholkover authored
Fixes freebsd/arm build. Change-Id: Id9b1905a5335f86d317dab7514e0ce7cb74aba1d Reviewed-on: https://go-review.googlesource.com/c/go/+/193537 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Ian Lance Taylor authored
GCC has supported the __atomic intrinsics since 4.7, and clang supports them as well. They are better than the __sync intrinsics in that they specify a memory model and, more importantly for our purposes, they are reliably implemented either in the compiler or in libatomic. Change-Id: I5e0036ea3300f65c28b1c3d1f3b93fb61c1cd646 Reviewed-on: https://go-review.googlesource.com/c/go/+/193603 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
-
Sjoerd Siebinga authored
It was already covered by a regex pattern, but it didn't have a test. To fix the issue for good, added regression test. Fixes #28832. Change-Id: I861e3bed92d3b9484fd8671270dbd2e264b10d2d Reviewed-on: https://go-review.googlesource.com/c/go/+/191311Reviewed-by: Daniel Martí <mvdan@mvdan.cc> Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Cuong Manh Le authored
CL 59610 merged tempname to tempAt, but some of comments and error message still refer to tempname. So changing to tempAt instead. Change-Id: I032f3bedc135d17124b0daaf22c97d0d5ada0a6f Reviewed-on: https://go-review.googlesource.com/c/go/+/193817 Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Than McIntosh authored
Perform a single lookup of "plugin.Open" at the point where we set the loaded flag for the context, then cache whether the result is nil, so that we can consult this cached value later on (instead of having to look up the symbol each time). This helps speed up the DynLinkingGo() context method, which is called from within some very hot loops in the linker (when linking 'hyperkube' from kubernetes, reduces total calls to "sym.(*Symbols).ROLookup" from 6.5M to 4.3M) Change-Id: I92a2ea2b21d24f67aec0a7afeef4acc77c095adf Reviewed-on: https://go-review.googlesource.com/c/go/+/193260Reviewed-by: Jeremy Faller <jeremy@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
Than McIntosh authored
This test contains a very tight loop with locking/unlocking that can wind up as an unpreemptible when compiled with gccgo, depending on inlining. Tweak the test slightly to avoid this problem. Change-Id: I155fd2b4bfea961244eb6c6594c24ab03d32d41c Reviewed-on: https://go-review.googlesource.com/c/go/+/193619 Run-TryBot: Than McIntosh <thanm@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Than McIntosh authored
Test with some code that triggered a compilation error bug in gccgo. Updates #33866. Change-Id: Ib2f226bbbebbfae33b41037438fe34dc5f2ad034 Reviewed-on: https://go-review.googlesource.com/c/go/+/193261Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Matthew Dempsky authored
This affects the position information that's associated with the implicit OCONV nodes created in assignconvfn. Not super important and the followup rewrite CL fixes this too, but fixing it separately is easy and makes toolstash-check happier. Change-Id: Ifd65dc524b367812d14a4d996647a5d40665fb38 Reviewed-on: https://go-review.googlesource.com/c/go/+/193606 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
-
Ian Lance Taylor authored
OpenBSD ships with GCC 4.2, the last version of GCC that used GPLv2. As that is quite old (current GCC version is GCC 9, GCC 4.2 was released in 2007), default to clang. Change-Id: Ib93e7b4f4f3ffb9e047e60ffca3696d26ab08aac Reviewed-on: https://go-review.googlesource.com/c/go/+/193621 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Cuong Manh Le authored
Add block method to preserve loop depth when evaluating statements in a block, so escape analysis can handle looping label more precisely. Updates #22438 Change-Id: I39b306544a6c0ee3fcbebbe0d0ee735cb71773e6 Reviewed-on: https://go-review.googlesource.com/c/go/+/193517 Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Ian Lance Taylor authored
Change-Id: Ic8d8399f726c1f9376499fdae92bea41632586ff Reviewed-on: https://go-review.googlesource.com/c/go/+/193602Reviewed-by: Jonathan Amsterdam <jba@google.com>
-
- 05 Sep, 2019 2 commits
-
-
psampaz authored
Updates #21450 Change-Id: Ia31c20b52bae5daeb33d918234c2f0944a8aeb07 GitHub-Last-Rev: cc8554477024277c3c1b4122344e9d14427680b3 GitHub-Pull-Request: golang/go#33489 Reviewed-on: https://go-review.googlesource.com/c/go/+/189137 Run-TryBot: Sylvain Zimmer <sylvinus@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Richard Musiol authored
This commit improves how registers get mapped to wasm variables. This is a preparation for future improvements (e.g. adding 32 bit float registers). Change-Id: I374c80b2d6c9bcce6b0e373fe921b5ad4dee40ff Reviewed-on: https://go-review.googlesource.com/c/go/+/191777 Run-TryBot: Richard Musiol <neelance@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
- 04 Sep, 2019 10 commits
-
-
Michael Knyszek authored
This change makes it so that if we're already finding ourselves in a situation where we've done more scan work than expected in the steady-state (that is, 50% of heap_scan for GOGC=100), then we fall back on the hard heap goal instead of continuing to assume the expected case. In some cases its possible that we're already doing more scan work than expected, and if GC assists come in just at that window where we notice it, they might accumulate way too much assist credit, causing undue heap growths if GOMAXPROCS=1 (since the fractional background worker isn't guaranteed to fire). This case seems awfully specific, and that's because it's exactly the case for TestGcSys, which has been flaky for some time as a result. Fixes #28574, #27636, and #27156. Change-Id: I771f42bed34739dbb1b84ad82cfe247f70836031 Reviewed-on: https://go-review.googlesource.com/c/go/+/184097 Run-TryBot: Michael Knyszek <mknyszek@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
-
Bryan C. Mills authored
Tests may accept positional arguments, in which case the -test.timeout flag must be passed before those arguments. Fixes #34072 Change-Id: I5b92d7c0edc4f9e1efb63b0733937b76236c0eff Reviewed-on: https://go-review.googlesource.com/c/go/+/193297 Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Austin Clements authored
This adds a platform-independent implementation of nacl's faketime support. It can be enabled by setting the faketime build tag. Updates #30439. Change-Id: Iee097004d56d796e6d2bfdd303a092c067ade87e Reviewed-on: https://go-review.googlesource.com/c/go/+/192740 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Austin Clements authored
If the faketime build tag is set, this causes syscall.Write for FDs 1 and 2 to redirect to runtime.write, since that's where we'll apply the faketime framing. This is equivalent to what nacl currently does in naclFile.write. We do this on all of the platforms except nacl, which has its own faketime support and we're about to remove, and Windows, which would require other changes to support faketime so we're leaving alone for now. Updates #30439. Change-Id: I138a5ca63577d92d15b5437d037bd3159fa84ee7 Reviewed-on: https://go-review.googlesource.com/c/go/+/192739 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Austin Clements authored
In preparation for general faketime support, this renames the existing nanotime, walltime, and write functions to nanotime1, walltime1, and write1 and wraps them with trivial Go functions. This will let us inject different implementations on all platforms when faketime is enabled. Updates #30439. Change-Id: Ice5ccc513a32a6d89ea051638676d3ee05b00418 Reviewed-on: https://go-review.googlesource.com/c/go/+/192738 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Bryan C. Mills authored
Fixes #34049 Change-Id: I817b83ee2d0ca6d01ec64998f14bc4f32e365d66 Reviewed-on: https://go-review.googlesource.com/c/go/+/193259 Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
-
Jonathan Amsterdam authored
You can't call Unwrap on the return value of fmt.Errorf, but you can pass the result to errors.Unwrap. Also, move the description of the Unwrap function up so the example makes sense. Fixes #34061. Change-Id: Ica07c44665c5e65deea4aa6a146fc543a5a0a99d Reviewed-on: https://go-review.googlesource.com/c/go/+/193298 Run-TryBot: Jonathan Amsterdam <jba@google.com> Reviewed-by: Katie Hockman <katie@golang.org>
-
Robert Griesemer authored
Fixes #34056. Change-Id: I2c9b7a20d19f458df5dcc376e29bee6be1f09f7a Reviewed-on: https://go-review.googlesource.com/c/go/+/193277Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Michael Anthony Knyszek authored
This change makes it so that worldsema isn't held across the mark phase. This means that various operations like ReadMemStats may now stop the world during the mark phase, reducing latency on such operations. Only three such operations are still no longer allowed to occur during marking: GOMAXPROCS, StartTrace, and StopTrace. For the former it's because any change to GOMAXPROCS impacts GC mark background worker scheduling and the details there are tricky. For the latter two it's because tracing needs to observe consistent GC start and GC end events, and if StartTrace or StopTrace may stop the world during marking, then it's possible for it to see a GC end event without a start or GC start event without an end, respectively. To ensure that GOMAXPROCS and StartTrace/StopTrace cannot proceed until marking is complete, the runtime now holds a new semaphore, gcsema, across the mark phase just like it used to with worldsema. Fixes #19812. Change-Id: I15d43ed184f711b3d104e8f267fb86e335f86bf9 Reviewed-on: https://go-review.googlesource.com/c/go/+/182657 Run-TryBot: Michael Knyszek <mknyszek@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
Tobias Klauser authored
Add a space before build tag comments so it corresponds to the format documented at https://golang.org/pkg/go/build/. Change-Id: I8349d0343597e304b97fb5479847231ed8945b1a Reviewed-on: https://go-review.googlesource.com/c/go/+/193237 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Daniel Martí <mvdan@mvdan.cc> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
- 03 Sep, 2019 10 commits
-
-
Filippo Valsorda authored
The exception allowed a specific intermediate [1] to chain up to a broken root that lacked the CA:TRUE X509v3 Basic Constraint. The broken root [2] is expiring at the end of 2019, so we can remove the exception in Go 1.14. Moreover, there is a reissued version of that root [3] (same Subject and SPKI, valid CA) which expires in 2029, so root stores should have migrated to it already, making the exception unnecessary. [1]: https://crt.sh/?caid=57 [2]: https://crt.sh/?id=1616049 [3]: https://crt.sh/?id=55 Change-Id: I43f51100982791b0e8bac90d143b60851cd46dfc Reviewed-on: https://go-review.googlesource.com/c/go/+/193038 Run-TryBot: Filippo Valsorda <filippo@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Keith Randall authored
Right now we generate hash functions for all types, just in case they are used as map keys. That's a lot of wasted effort and binary size for types which will never be used as a map key. Instead, generate hash functions only for types that we know are map keys. Just doing that is a bit too simple, since maps with an interface type as a key might have to hash any concrete key type that implements that interface. So for that case, implement hashing of such types at runtime (instead of with generated code). It will be slower, but only for maps with interface types as keys, and maybe only a bit slower as the aeshash time probably dominates the dispatch time. Reorg where we keep the equals and hash functions. Move the hash function from the key type to the map type, saving a field in every non-map type. That leaves only one function in the alg structure, so get rid of that and just keep the equal function in the type descriptor itself. cmd/go now has 10 generated hash functions, instead of 504. Makes cmd/go 1.0% smaller. Update #6853. Speed on non-interface keys is unchanged. Speed on interface keys is ~20% slower: name old time/op new time/op delta MapInterfaceString-8 23.0ns ±21% 27.6ns ±14% +20.01% (p=0.002 n=10+10) MapInterfacePtr-8 19.4ns ±16% 23.7ns ± 7% +22.48% (p=0.000 n=10+8) Change-Id: I7c2e42292a46b5d4e288aaec4029bdbb01089263 Reviewed-on: https://go-review.googlesource.com/c/go/+/191198 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Martin Möhrmann <moehrmann@google.com>
-
Andrew authored
Change-Id: I3340561c0b17bf28d8d480e00f5bc8afb2a897ef Reviewed-on: https://go-review.googlesource.com/c/go/+/193041 Run-TryBot: Andrew Bonventre <andybons@golang.org> Reviewed-by: Katie Hockman <katie@golang.org>
-
Ian Lance Taylor authored
Updates #31563 Fixes #34041 Change-Id: Ib9fdcd2f83d867fd31b42eab3a813f5cef88860e Reviewed-on: https://go-review.googlesource.com/c/go/+/193077 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
-
Keith Randall authored
The distribution of hash outputs when varying the seed is not good enough on 32-bit platforms. This isn't a likely attack vector (the adversary controlling the seed), so it isn't a huge deal. Would be nice to fix, though. For now, just skip this test. Fixes #33988 Change-Id: Icf51ab687fc215422a5492ae78e6f414b33e04cb Reviewed-on: https://go-review.googlesource.com/c/go/+/193078 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Cuong Manh Le authored
Assinging to 1-element array/1-field struct variable is considered clobbering the whole variable. By emitting OpVarDef in this case, liveness analysis can now know the variable is redefined. Also, the isfat is not necessary anymore, and will be removed in follow up CL. Fixes #33916 Change-Id: Iece0d90b05273f333d59d6ee5b12ee7dc71908c2 Reviewed-on: https://go-review.googlesource.com/c/go/+/192979 Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Than McIntosh authored
Fix a buglet in abbrev processing related to DW_FORM_indirect. When reading an abbrev entry if we encounter an attribute with form DW_FORM_indirect, leave the class as ClassUnknown, then when the abbrev is walked during the reading of the DIE fill in the class based on the value read at that point (code for handling DW_FORM_indirect seems to be already partially in place in the DIE reader). Updates #33488. Change-Id: I9dc89abf5cc8d7ea96824c0011bef979de0540bf Reviewed-on: https://go-review.googlesource.com/c/go/+/190158 Run-TryBot: Than McIntosh <thanm@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com>
-
Matthew Dempsky authored
In general, a conversion to interface type may require values to be boxed, which in turn necessitates escape analysis to determine whether the boxed representation can be stack allocated. However, esc.go used to unconditionally print escape analysis decisions about OCONVIFACE, even for conversions that don't require boxing (e.g., pointers, channels, maps, functions). For test compatibility with esc.go, escape.go similarly printed these useless diagnostics. This CL removes the diagnostics, and updates test expectations accordingly. Change-Id: I97c57a4a08e44d265bba516c78426ff4f2bf1e12 Reviewed-on: https://go-review.googlesource.com/c/go/+/192697 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
Matthew Dempsky authored
While here, change the params to be easier to understand: "t" is now always the type being updated, and "underlying" is now used to represent the underlying type. Updates #33658. Change-Id: Iabb64414ca3abaa8c780e4c9093e0c77b76fabf9 Reviewed-on: https://go-review.googlesource.com/c/go/+/192724 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Robert Griesemer <gri@golang.org>
-
Matthew Dempsky authored
This CL extends {defer,resume}checkwidth to support nesting, which simplifies usage. Updates #33658. Change-Id: Ib3ffb8a7cabfae2cbeba74e21748c228436f4726 Reviewed-on: https://go-review.googlesource.com/c/go/+/192721 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Robert Griesemer <gri@golang.org>
-