1. 24 May, 2018 3 commits
    • Richard Musiol's avatar
      cmd/compile: fix write barrier control value on wasm · 8aa57f1e
      Richard Musiol authored
      This commit fixes a regression with wasm caused by a367f44c.
      It adds optimizations to the lowering rules of wasm to ensure
      that the lowered version of the code generated for write barriers
      is simple enough so it can be processed by Liveness.markUnsafePoints.
      
      Change-Id: Ic98f0dd3791fe1df23dcb34d2457fbde7ffce441
      Reviewed-on: https://go-review.googlesource.com/114375
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      8aa57f1e
    • Robert Griesemer's avatar
      go/types: permit embedding of non-defined interfaces via alias type names · c730a93f
      Robert Griesemer authored
      Embedded interfaces in interfaces must take the form of a (possibly
      qualified) type name. Before alias types, a type name always denoted
      a defined (formerly "named") type. The introduction of alias types
      enabled embedding of non-defined types via alias type names, as in:
      
      type T interface { E }
      type E interface { m() }
      
      Both cmd/compile and gccgo accept this kind of code, and the spec does
      not prohibit it. There may be code in the wild that makes use of this.
      
      go/types was written under the assumption that embedded interfaces
      were always defined types; and that assumption was even reflected in
      the go/types API.
      
      This change removes this restriction in the implementation (which
      happens to make it simpler), and in the API (by adding additional
      functions and deprecating the corresponding older versions).
      
      It also replaces uses of NewInterface and Embedded (old API) by
      NewInterface2 and EmbeddedType (new API) in dependent packages
      (importers).
      
      The old API remains in place for backward compatibility and is marked
      as deprecated.
      
      Fixes #25301.
      
      Change-Id: I272acd498754179efaf0590ca49d3eb4eee4348e
      Reviewed-on: https://go-review.googlesource.com/114317Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      c730a93f
    • Austin Clements's avatar
      runtime: fix preemption deadlocks in TestDebugCall* · 29957c52
      Austin Clements authored
      TestDebugCall* uses atomic spin loops and hence can deadlock if the
      garbage collector is enabled (because of #10958; ironically,
      implementing debugger call injection is closely related to fixing this
      exact issue, but we're not there yet).
      
      Fix this by disabling the garbage collector during these tests.
      
      Updates #25519 (might fix it, though I suspect not)
      
      Change-Id: If1e454b9cdea8e4b1cd82509b762c75b6acd8476
      Reviewed-on: https://go-review.googlesource.com/114086
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      29957c52
  2. 23 May, 2018 23 commits
    • Heschi Kreinick's avatar
      cmd/compile: fix debug info generation for loads from Phis · 65c365bf
      Heschi Kreinick authored
      Apparently a LoadReg can take a Phi as its argument. The Phi has names
      in the NamedValue table, so just read the Load's names from the Phi.
      
      The example given, XORKeyStream in chacha20, is pretty complicated so I
      didn't try to actually debug it and verify that the results are right.
      But the debug logging looks reasonable, with the right names in the right
      registers at the right times.
      
      Fixes #25404
      
      Change-Id: I2c3183dcfb033948556d6805bd66c22c0b45625c
      Reviewed-on: https://go-review.googlesource.com/114008
      Run-TryBot: Heschi Kreinick <heschi@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      65c365bf
    • Heschi Kreinick's avatar
      cmd/compile: clean up debug info generation logging · 391a963b
      Heschi Kreinick authored
      Remove the unexpected function, which is a lot less relevant now that
      the generation basically can't detect invalid states, and make sure no
      logging appears without -d locationlists=2.
      
      Updates #25404
      
      Change-Id: If3522df5a7397f2e7b43cb808936e319132132b6
      Reviewed-on: https://go-review.googlesource.com/114007
      Run-TryBot: Heschi Kreinick <heschi@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      391a963b
    • Alexander Döring's avatar
      math/big: reduce allocations in Karatsuba case of sqr · 1a5d0f83
      Alexander Döring authored
      For #23221.
      
      Change-Id: If55dcf2e0706d6658f4a0863e3740437e008706c
      Reviewed-on: https://go-review.googlesource.com/114335
      Run-TryBot: Robert Griesemer <gri@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      1a5d0f83
    • Anit Gandhi's avatar
      crypto/{aes,internal/cipherhw,tls}: use common internal/cpu in place of cipherhw · 3f2039e2
      Anit Gandhi authored
      When the internal/cpu package was introduced, the AES package still used
      the custom crypto/internal/cipherhw package for amd64 and s390x. This
      change removes that package entirely in favor of directly referencing the
      cpu feature flags set and exposed by the internal/cpu package. In
      addition, 5 new flags have been added to the internal/cpu s390x struct
      for detecting various cipher message (KM) features.
      
      Change-Id: I77cdd8bc1b04ab0e483b21bf1879b5801a4ba5f4
      GitHub-Last-Rev: a611e3ecb1f480dcbfce3cb0c8c9e4058f56c1a4
      GitHub-Pull-Request: golang/go#24766
      Reviewed-on: https://go-review.googlesource.com/105695Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      3f2039e2
    • Richard Musiol's avatar
      cmd/compile: add wasm stack optimization · 482d2419
      Richard Musiol authored
      Go's SSA instructions only operate on registers. For example, an add
      instruction would read two registers, do the addition and then write
      to a register. WebAssembly's instructions, on the other hand, operate
      on the stack. The add instruction first pops two values from the stack,
      does the addition, then pushes the result to the stack. To fulfill
      Go's semantics, one needs to map Go's single add instruction to
      4 WebAssembly instructions:
      - Push the value of local variable A to the stack
      - Push the value of local variable B to the stack
      - Do addition
      - Write value from stack to local variable C
      
      Now consider that B was set to the constant 42 before the addition:
      - Push constant 42 to the stack
      - Write value from stack to local variable B
      
      This works, but is inefficient. Instead, the stack is used directly
      by inlining instructions if possible. With inlining it becomes:
      - Push the value of local variable A to the stack (add)
      - Push constant 42 to the stack (constant)
      - Do addition (add)
      - Write value from stack to local variable C (add)
      
      Note that the two SSA instructions can not be generated sequentially
      anymore, because their WebAssembly instructions are interleaved.
      
      Design doc: https://docs.google.com/document/d/131vjr4DH6JFnb-blm_uRdaC0_Nv3OUwjEY5qVCxCup4
      
      Updates #18892
      
      Change-Id: Ie35e1c0bebf4985fddda0d6330eb2066f9ad6dec
      Reviewed-on: https://go-review.googlesource.com/103535
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      482d2419
    • Hana Kim's avatar
      cmd/vendor/.../unix: pick up upstream fixes for broken tests · 02399fa6
      Hana Kim authored
      Update golang/go#25528
      Update golang/go#25529
      
      Change-Id: I47ec282e76eb7740547e220ac00d6a7992e17b9e
      Reviewed-on: https://go-review.googlesource.com/114094Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      02399fa6
    • Alexander Döring's avatar
      math/big: specialize Karatsuba implementation for squaring · 1dc20e91
      Alexander Döring authored
      Currently we use three different algorithms for squaring:
      1. basic multiplication for small numbers
      2. basic squaring for medium numbers
      3. Karatsuba multiplication for large numbers
      
      Change 3. to a version of Karatsuba multiplication specialized
      for x == y.
      
      Increasing the performance of 3. lets us lower the threshold
      between 2. and 3.
      
      Adapt TestCalibrate to the change that 3. isn't independent
      of the threshold between 1. and 2. any more.
      
      Fixes #23221.
      
      benchstat old.txt new.txt
      name           old time/op  new time/op  delta
      NatSqr/1-4     29.6ns ± 7%  29.5ns ± 5%     ~     (p=0.103 n=50+50)
      NatSqr/2-4     51.9ns ± 1%  51.9ns ± 1%     ~     (p=0.693 n=42+49)
      NatSqr/3-4     64.3ns ± 1%  64.1ns ± 0%   -0.26%  (p=0.000 n=46+43)
      NatSqr/5-4     93.5ns ± 2%  93.1ns ± 1%   -0.39%  (p=0.000 n=48+49)
      NatSqr/8-4      131ns ± 1%   131ns ± 1%     ~     (p=0.870 n=46+49)
      NatSqr/10-4     175ns ± 1%   175ns ± 1%   +0.38%  (p=0.000 n=49+47)
      NatSqr/20-4     426ns ± 1%   429ns ± 1%   +0.84%  (p=0.000 n=46+48)
      NatSqr/30-4     702ns ± 2%   699ns ± 1%   -0.38%  (p=0.011 n=46+44)
      NatSqr/50-4    1.44µs ± 2%  1.43µs ± 1%   -0.54%  (p=0.010 n=48+48)
      NatSqr/80-4    2.85µs ± 1%  2.87µs ± 1%   +0.68%  (p=0.000 n=47+47)
      NatSqr/100-4   4.06µs ± 1%  4.07µs ± 1%   +0.29%  (p=0.000 n=46+45)
      NatSqr/200-4   13.4µs ± 1%  13.5µs ± 1%   +0.73%  (p=0.000 n=48+48)
      NatSqr/300-4   28.5µs ± 1%  28.2µs ± 1%   -1.22%  (p=0.000 n=46+48)
      NatSqr/500-4   81.9µs ± 1%  67.0µs ± 1%  -18.25%  (p=0.000 n=48+48)
      NatSqr/800-4    161µs ± 1%   140µs ± 1%  -13.29%  (p=0.000 n=47+48)
      NatSqr/1000-4   245µs ± 1%   207µs ± 1%  -15.17%  (p=0.000 n=49+49)
      
      go test -v -calibrate --run TestCalibrate
      ...
      Calibrating threshold between basicSqr(x) and karatsubaSqr(x)
      Looking for a timing difference for x between 200 - 500 words by 10 step
      words = 200 deltaT =     -980ns (  -7%) is karatsubaSqr(x) better: false
      words = 210 deltaT =     -773ns (  -5%) is karatsubaSqr(x) better: false
      words = 220 deltaT =     -695ns (  -4%) is karatsubaSqr(x) better: false
      words = 230 deltaT =     -570ns (  -3%) is karatsubaSqr(x) better: false
      words = 240 deltaT =     -458ns (  -2%) is karatsubaSqr(x) better: false
      words = 250 deltaT =      -63ns (   0%) is karatsubaSqr(x) better: false
      words = 260 deltaT =      118ns (   0%) is karatsubaSqr(x) better: true  threshold  found
      words = 270 deltaT =      377ns (   1%) is karatsubaSqr(x) better: true
      words = 280 deltaT =      765ns (   3%) is karatsubaSqr(x) better: true
      words = 290 deltaT =      673ns (   2%) is karatsubaSqr(x) better: true
      words = 300 deltaT =      502ns (   1%) is karatsubaSqr(x) better: true
      words = 310 deltaT =      629ns (   2%) is karatsubaSqr(x) better: true
      words = 320 deltaT =    1.011µs (   3%) is karatsubaSqr(x) better: true
      words = 330 deltaT =     1.36µs (   4%) is karatsubaSqr(x) better: true
      words = 340 deltaT =    3.001µs (   8%) is karatsubaSqr(x) better: true
      words = 350 deltaT =    3.178µs (   8%) is karatsubaSqr(x) better: true
      ...
      
      Change-Id: I6f13c23d94d042539ac28e77fd2618cdc37a429e
      Reviewed-on: https://go-review.googlesource.com/105075
      Run-TryBot: Robert Griesemer <gri@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      1dc20e91
    • Andrew Bonventre's avatar
      doc: update Code of Conduct · 723f4286
      Andrew Bonventre authored
      Change-Id: I82c03dd026bb797a49b7361389373924acf6366c
      Reviewed-on: https://go-review.googlesource.com/114085Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      723f4286
    • Hana (Hyang-Ah) Kim's avatar
      cmd/pprof: add readline support similar to upstream · 3f892149
      Hana (Hyang-Ah) Kim authored
      The upstream pprof implements the readline feature using
      the github.com/chzyer/readline package in its pprof.go main.
      
      It would be ideal to use the same readline support package as
      the upstream for better user experience and code maintenance.
      However, bringing in third-party packages requires more work
      than I envisioned (e.g. clean up the vendored code to meet the
      expected standard - iow don't break builders).
      
      As a result, this change implements the similar feature
      for the pprof command included in the go distribution
      (cmd/pprof/pprof.go) using golang.org/x/crypto/ssh/terminal
      for now.
      
      Auto-completion is not yet supported (same in the upstream).
      
      The feature is enabled only in linux, windows, darwin, and
      only when terminal support is available.
      
      This change brings in new vendored packages,
      golang.org/x/crypto/ssh/terminal and
      golang.org/x/sys/{unix,windows}.
      
      For #14041
      
      Change-Id: If4a790796acf2ab20f7e81268b9d9354c5a5cd2b
      Reviewed-on: https://go-review.googlesource.com/112436
      Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      3f892149
    • Richard Musiol's avatar
      syscall: partially revert "enable some nacl code to be shared with js/wasm" · 392ff18b
      Richard Musiol authored
      This partially reverts commit 3bdbb5df.
      The latest CL of js/wasm's file system support does not use
      file descriptor mapping any more.
      
      Change-Id: Iaec9c84b392366282cddc69acc75c8a3eb556824
      Reviewed-on: https://go-review.googlesource.com/114195Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      392ff18b
    • Adam Medzinski's avatar
      net: add example for net.UDPConn.WriteTo function · 645d4726
      Adam Medzinski authored
      The current documentation of the WriteTo function is very poor and it
      is difficult to deduce how to use it correctly. A good example will
      make things much easier.
      
      Fixes #25456
      
      Change-Id: Ibf0c0e153afae8f3e0d7d765d0dc9bcbfd69bfb1
      Reviewed-on: https://go-review.googlesource.com/113775
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      645d4726
    • Elias Naur's avatar
      misc/android: forward SIGQUIT to the process running on the device · 7ba1c91d
      Elias Naur authored
      When a test binary runs for too long, the go command sends it a
      SIGQUIT to force a backtrace dump. On Android, the exec wrapper
      will instead receive the signal and dump its backtrace.
      
      Forward SIGQUIT signals from the wrapper to the wrapped process
      to gain useful backtraces.
      
      Inspired by issuse 25519; this CL would have revealed the hanging
      test directly in the builder log.
      
      Change-Id: Ic362d06940d261374343a1dc09366ef54edaa631
      Reviewed-on: https://go-review.googlesource.com/114137
      Run-TryBot: Elias Naur <elias.naur@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      7ba1c91d
    • David Chase's avatar
      cmd/compile: grow stack before test() to avoid gdb misbehavior · 77c51c6c
      David Chase authored
      While next-ing over a call in gdb, if execution of that call
      causes a goroutine's stack to grow (i.e., be moved), gdb loses
      track and runs ahead to the next breakpoint, or to the end of
      the program, whichever comes first.
      
      Prevent this by preemptively growing the stack so that
      ssa/debug_test.go will reliably measure what is intended,
      the goodness of line number placement and variable printing.
      
      Fixes #25497.
      
      Change-Id: I8daf931650292a8c8faad2285d7fd405f2157bd2
      Reviewed-on: https://go-review.googlesource.com/114080
      Run-TryBot: David Chase <drchase@google.com>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      77c51c6c
    • Ian Gudger's avatar
      net: fix DNS NXDOMAIN performance regression · 11b3ee6f
      Ian Gudger authored
      golang.org/cl/37879 unintentionally changed the way NXDOMAIN errors were
      handled. Before that change, resolution would fail on the first NXDOMAIN
      error and return to the user. After that change, the next server would
      be consulted and resolution would fail only after all servers had been
      consulted. This change restores the old behavior.
      
      Go 10.10.2:
      BenchmarkGoLookupIP-12                        	   10000	    174883 ns/op   11450 B/op	     163 allocs/op
      BenchmarkGoLookupIPNoSuchHost-12              	    3000	    670140 ns/op   52189 B/op	     544 allocs/op
      BenchmarkGoLookupIPWithBrokenNameServer-12    	       1	5002568137 ns/op  163792 B/op	     375 allocs/op
      
      before this change:
      BenchmarkGoLookupIP-12                        	   10000	    165501 ns/op    8585 B/op	      94 allocs/op
      BenchmarkGoLookupIPNoSuchHost-12              	    1000	   1204117 ns/op   83661 B/op	     674 allocs/op
      BenchmarkGoLookupIPWithBrokenNameServer-12    	       1	5002629186 ns/op  159128 B/op	     275 allocs/op
      
      after this change:
      BenchmarkGoLookupIP-12                        	   10000	    158102 ns/op    8585 B/op	      94 allocs/op
      BenchmarkGoLookupIPNoSuchHost-12              	    2000	    645364 ns/op   42990 B/op	     356 allocs/op
      BenchmarkGoLookupIPWithBrokenNameServer-12    	       1	5002163437 ns/op  159144 B/op	     275 allocs/op
      
      Fixes #25336
      
      Change-Id: I315cd70330d1f66e54ce5a189a61c99f095bc138
      Reviewed-on: https://go-review.googlesource.com/113815Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      11b3ee6f
    • dchenk's avatar
      net/http: fix doc comment on PostFormValue function · 09797676
      dchenk authored
      This function checks Request.PostForm, which now includes values parsed
      from a PATCH request.
      
      Change-Id: I5d0af58d9c0e9111d4e822c45f0fb1f511bbf0d5
      Reviewed-on: https://go-review.googlesource.com/114009Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      09797676
    • azat's avatar
      os: Add example for Expand function. · ef993816
      azat authored
      Change-Id: I581492c29158e57ca2f98b75f47870791965a7ff
      Reviewed-on: https://go-review.googlesource.com/81155Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      ef993816
    • isharipo's avatar
      cmd/internal/obj/x86: add missing Yi8 for VEX ytabs · 67fe8b56
      isharipo authored
      This change adds Yi8 forms for every ytab that had them before AVX-512 patch.
      The rationale is backwards-compatibility.
      
      EVEX forms remain strict and unchanged as they're not bound to any
      backwards-compatibility issues.
      
      Fixes #25510
      
      Change-Id: Icd692266010ed64c9fe47cc837afc2edf2ad2d1d
      Reviewed-on: https://go-review.googlesource.com/114136
      Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIlya Tocar <ilya.tocar@intel.com>
      67fe8b56
    • Peter Weinberger's avatar
      internal/trace: change Less to make sorting events deterministice · 1764609b
      Peter Weinberger authored
          The existing code just used timestamps. The new code uses more fields
          when timestamps are equal.
      
      	Revised to shorten code per reviewer comments.
      
      Change-Id: Ibd0824d0acd7644484d536b1a754a0da156fac3d
      Reviewed-on: https://go-review.googlesource.com/113721Reviewed-by: 's avatarHyang-Ah Hana Kim <hyangah@gmail.com>
      1764609b
    • Alex Brainman's avatar
      cmd/go: skip TestLinkerTmpDirIsDeleted if cgo is not enabled · ef880a2f
      Alex Brainman authored
      Fixes builders that do not have cgo installed.
      
      Change-Id: I719b7959226b0e67c3ffc11e071784787cabc5ab
      Reviewed-on: https://go-review.googlesource.com/114235
      Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      ef880a2f
    • Tobias Klauser's avatar
      debug/pe: gofmt · 4bb649fb
      Tobias Klauser authored
      CL 110555 introduced some changes which were not properly gofmt'ed.
      Because the CL was sent via Github the gofmt checks usually performed by
      git-codereview didn't catch this (see #24946).
      
      Change-Id: I65c1271620690dbeec88b4ce482d158f7d6df45d
      Reviewed-on: https://go-review.googlesource.com/114255
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAlex Brainman <alex.brainman@gmail.com>
      4bb649fb
    • Alex Brainman's avatar
      cmd/link: close go.o before deleting it · 1174ad3a
      Alex Brainman authored
      Windows does not allow to delete opened file.
      
      Fixes #24704
      
      Change-Id: Idfca2d00a2c46bdd9bd2a721478bfd003c474ece
      Reviewed-on: https://go-review.googlesource.com/113935
      Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      1174ad3a
    • Ben Shi's avatar
      misc/android: add a NL at the of README · 5776bd55
      Ben Shi authored
      There is no NL at the end of README, and that make it strange
      when doing "cat misc/android/README".
      
      Change-Id: Ib47953d7b16e8927a4d6be7d5be8de8f2ddbcc39
      Reviewed-on: https://go-review.googlesource.com/114010Reviewed-by: 's avatarElias Naur <elias.naur@gmail.com>
      5776bd55
    • Ben Burkert's avatar
      internal/poll: disable splice on old linux versions · 92bdfab7
      Ben Burkert authored
      The splice syscall is buggy prior to linux 2.6.29. Instead of returning
      0 when reading a closed socket, it returns EAGAIN.  While it is possible
      to detect this (HAProxy falls back to recv), it is simpiler to avoid
      using splice all together. the "fcntl(fd, F_GETPIPE_SZ)" syscall is used
      detect buggy versions of splice as the syscall returns EINVAL on
      versions prior to 2.6.35.
      
      Fixes #25486
      
      Change-Id: I860c029f13de2b09e95a7ba39b76ac7fca91a195
      Reviewed-on: https://go-review.googlesource.com/113999Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      92bdfab7
  3. 22 May, 2018 14 commits
    • Austin Clements's avatar
      cmd/compile: ignore g register in liveness analysis · 13290098
      Austin Clements authored
      In rare circumstances that we don't yet fully understand, the g
      register can be spilled to the stack and then reloaded. If this
      happens, liveness analysis sees a pointer load into a
      non-general-purpose register and panics.
      
      We should fix the root cause of this, but fix the build for now by
      ignoring pointer loads into the g register.
      
      For #25504.
      
      Change-Id: I0dfee1af9750c8e9157c7637280cdf07118ef2ca
      Reviewed-on: https://go-review.googlesource.com/114081
      Run-TryBot: Austin Clements <austin@google.com>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      13290098
    • David Chase's avatar
      cmd/compile: common up code in fuse for joining blocks · cfbf375a
      David Chase authored
      There's semantically-but-not-literally equivalent code in
      two cases for joining blocks' value lists in ssa/fuse.go.
      It can be made literally equivalent, then commoned up.
      
      Updates #25426.
      
      Change-Id: Id1819366c9d22e5126f9203dcd4c622423994110
      Reviewed-on: https://go-review.googlesource.com/113719
      Run-TryBot: David Chase <drchase@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarJosh Bleecher Snyder <josharian@gmail.com>
      cfbf375a
    • Austin Clements's avatar
      cmd/compile: reuse liveness structures · f11e9aac
      Austin Clements authored
      Currently liveness analysis is a significant source of allocations in
      the compiler. This CL mitigates this by moving the main sources of
      allocation to the ssa.Cache, allowing them to be reused between
      different liveness runs.
      
      Passes toolstash -cmp.
      
      name        old time/op       new time/op       delta
      Template          194ms ± 1%        193ms ± 1%    ~     (p=0.156 n=10+9)
      Unicode          99.1ms ± 1%       99.3ms ± 2%    ~     (p=0.853 n=10+10)
      GoTypes           689ms ± 0%        687ms ± 0%  -0.27% 	(p=0.022 n=10+9)
      Compiler          3.29s ± 1%        3.30s ± 1%    ~ 	(p=0.489 n=9+9)
      SSA               8.02s ± 2%        7.97s ± 1%  -0.71%  (p=0.011 n=10+10)
      Flate             131ms ± 1%        130ms ± 1%  -0.59%  (p=0.043 n=9+10)
      GoParser          162ms ± 1%        160ms ± 1%  -1.53%  (p=0.000 n=10+10)
      Reflect           454ms ± 0%        454ms ± 0%    ~    	(p=0.959 n=8+8)
      Tar               185ms ± 1%        185ms ± 2%    ~ 	(p=0.905 n=9+10)
      XML               235ms ± 1%        232ms ± 1%  -1.15% 	(p=0.001 n=9+10)
      [Geo mean]        414ms             412ms       -0.39%
      
      name        old alloc/op      new alloc/op      delta
      Template         35.6MB ± 0%       34.2MB ± 0%  -3.75%  (p=0.000 n=10+10)
      Unicode          29.5MB ± 0%       29.4MB ± 0%  -0.26%  (p=0.000 n=10+9)
      GoTypes           117MB ± 0%        112MB ± 0%  -3.78%  (p=0.000 n=9+10)
      Compiler          532MB ± 0%        512MB ± 0%  -3.80%  (p=0.000 n=10+10)
      SSA              1.55GB ± 0%       1.48GB ± 0%  -4.82%  (p=0.000 n=10+10)
      Flate            24.5MB ± 0%       23.6MB ± 0%  -3.61%  (p=0.000 n=10+9)
      GoParser         28.7MB ± 0%       27.7MB ± 0%  -3.43%  (p=0.000 n=10+10)
      Reflect          80.5MB ± 0%       78.1MB ± 0%  -2.96%  (p=0.000 n=10+10)
      Tar              35.1MB ± 0%       33.9MB ± 0%  -3.49%  (p=0.000 n=10+10)
      XML              43.7MB ± 0%       42.4MB ± 0%  -3.05%  (p=0.000 n=10+10)
      [Geo mean]       78.4MB            75.8MB       -3.30%
      
      name        old allocs/op     new allocs/op     delta
      Template           335k ± 0%         335k ± 0%  -0.12%  (p=0.000 n=10+10)
      Unicode            339k ± 0%         339k ± 0%  -0.01%  (p=0.001 n=10+10)
      GoTypes           1.18M ± 0%        1.17M ± 0%  -0.12%  (p=0.000 n=10+10)
      Compiler          4.94M ± 0%        4.94M ± 0%  -0.06%  (p=0.000 n=10+10)
      SSA               12.5M ± 0%        12.5M ± 0%  -0.07%  (p=0.000 n=10+10)
      Flate              223k ± 0%         223k ± 0%  -0.11%  (p=0.000 n=10+10)
      GoParser           281k ± 0%         281k ± 0%  -0.08%  (p=0.000 n=10+10)
      Reflect            963k ± 0%         960k ± 0%  -0.23%  (p=0.000 n=10+9)
      Tar                330k ± 0%         330k ± 0%  -0.12%  (p=0.000 n=10+10)
      XML                392k ± 0%         392k ± 0%  -0.08%  (p=0.000 n=10+10)
      [Geo mean]         761k              760k       -0.10%
      
      Compared to just before "cmd/internal/obj: consolidate emitting entry
      stack map", the cumulative effect of adding stack maps everywhere and
      register maps, plus these optimizations, is:
      
      name        old time/op       new time/op       delta
      Template          186ms ± 1%        194ms ± 1%  +4.41%  (p=0.000 n=9+10)
      Unicode          96.5ms ± 1%       99.1ms ± 1%  +2.76%  (p=0.000 n=9+10)
      GoTypes           659ms ± 1%        689ms ± 0%  +4.56%  (p=0.000 n=9+10)
      Compiler          3.14s ± 2%        3.29s ± 1%  +4.95%  (p=0.000 n=9+9)
      SSA               7.68s ± 3%        8.02s ± 2%  +4.41%  (p=0.000 n=10+10)
      Flate             126ms ± 0%        131ms ± 1%  +4.14%  (p=0.000 n=10+9)
      GoParser          153ms ± 1%        162ms ± 1%  +5.90%  (p=0.000 n=10+10)
      Reflect           436ms ± 1%        454ms ± 0%  +4.14%  (p=0.000 n=10+8)
      Tar               177ms ± 1%        185ms ± 1%  +4.28%  (p=0.000 n=8+9)
      XML               224ms ± 1%        235ms ± 1%  +5.23%  (p=0.000 n=10+9)
      [Geo mean]        396ms             414ms       +4.47%
      
      name        old alloc/op      new alloc/op      delta
      Template         34.5MB ± 0%       35.6MB ± 0%  +3.24%  (p=0.000 n=10+10)
      Unicode          29.3MB ± 0%       29.5MB ± 0%  +0.51%  (p=0.000 n=9+10)
      GoTypes           113MB ± 0%        117MB ± 0%  +3.31%  (p=0.000 n=8+9)
      Compiler          509MB ± 0%        532MB ± 0%  +4.46%  (p=0.000 n=10+10)
      SSA              1.49GB ± 0%       1.55GB ± 0%  +4.10%  (p=0.000 n=10+10)
      Flate            23.8MB ± 0%       24.5MB ± 0%  +2.92%  (p=0.000 n=10+10)
      GoParser         27.9MB ± 0%       28.7MB ± 0%  +2.88%  (p=0.000 n=10+10)
      Reflect          77.4MB ± 0%       80.5MB ± 0%  +4.01%  (p=0.000 n=10+10)
      Tar              34.1MB ± 0%       35.1MB ± 0%  +3.12%  (p=0.000 n=10+10)
      XML              42.6MB ± 0%       43.7MB ± 0%  +2.65%  (p=0.000 n=10+10)
      [Geo mean]       76.1MB            78.4MB       +3.11%
      
      name        old allocs/op     new allocs/op     delta
      Template           320k ± 0%         335k ± 0%  +4.60%  (p=0.000 n=10+10)
      Unicode            336k ± 0%         339k ± 0%  +0.96%  (p=0.000 n=9+10)
      GoTypes           1.12M ± 0%        1.18M ± 0%  +4.55%  (p=0.000 n=10+10)
      Compiler          4.66M ± 0%        4.94M ± 0%  +6.18%  (p=0.000 n=10+10)
      SSA               11.9M ± 0%        12.5M ± 0%  +5.37%  (p=0.000 n=10+10)
      Flate              214k ± 0%         223k ± 0%  +4.15%  (p=0.000 n=9+10)
      GoParser           270k ± 0%         281k ± 0%  +4.15%  (p=0.000 n=10+10)
      Reflect            921k ± 0%         963k ± 0%  +4.49%  (p=0.000 n=10+10)
      Tar                317k ± 0%         330k ± 0%  +4.25%  (p=0.000 n=10+10)
      XML                375k ± 0%         392k ± 0%  +4.75%  (p=0.000 n=10+10)
      [Geo mean]         729k              761k       +4.34%
      
      Updates #24543.
      
      Change-Id: Ia951fdb3c17ae1c156e1d05fc42e69caba33c91a
      Reviewed-on: https://go-review.googlesource.com/110179
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      f11e9aac
    • Austin Clements's avatar
      cmd/compile: make LivenessMap dense · 75dadbec
      Austin Clements authored
      Currently liveness information is kept in a map keyed by *ssa.Value.
      This made sense when liveness information was sparse, but now we have
      liveness for nearly every ssa.Value. There's a fair amount of memory
      and CPU overhead to this map now.
      
      This CL replaces this map with a slice indexed by value ID.
      
      Passes toolstash -cmp.
      
      name        old time/op       new time/op       delta
      Template          197ms ± 1%        194ms ± 1%  -1.60%  (p=0.000 n=9+10)
      Unicode           100ms ± 2%         99ms ± 1%  -1.31%  (p=0.012 n=8+10)
      GoTypes           695ms ± 1%        689ms ± 0%  -0.94%  (p=0.000 n=10+10)
      Compiler          3.34s ± 2%        3.29s ± 1%  -1.26%  (p=0.000 n=10+9)
      SSA               8.08s ± 0%        8.02s ± 2%  -0.70%  (p=0.034 n=8+10)
      Flate             133ms ± 1%        131ms ± 1%  -1.04%  (p=0.006 n=10+9)
      GoParser          163ms ± 1%        162ms ± 1%  -0.79%  (p=0.034 n=8+10)
      Reflect           459ms ± 1%        454ms ± 0%  -1.06%  (p=0.000 n=10+8)
      Tar               186ms ± 1%        185ms ± 1%  -0.87%  (p=0.003 n=9+9)
      XML               238ms ± 1%        235ms ± 1%  -1.01%  (p=0.004 n=8+9)
      [Geo mean]        418ms             414ms       -1.06%
      
      name        old alloc/op      new alloc/op      delta
      Template         36.4MB ± 0%       35.6MB ± 0%  -2.29%  (p=0.000 n=9+10)
      Unicode          29.7MB ± 0%       29.5MB ± 0%  -0.68%  (p=0.000 n=10+10)
      GoTypes           119MB ± 0%        117MB ± 0%  -2.30%  (p=0.000 n=9+9)
      Compiler          546MB ± 0%        532MB ± 0%  -2.47%  (p=0.000 n=10+10)
      SSA              1.59GB ± 0%       1.55GB ± 0%  -2.41%  (p=0.000 n=10+10)
      Flate            24.9MB ± 0%       24.5MB ± 0%  -1.77%  (p=0.000 n=8+10)
      GoParser         29.5MB ± 0%       28.7MB ± 0%  -2.60%  (p=0.000 n=9+10)
      Reflect          81.7MB ± 0%       80.5MB ± 0%  -1.49%  (p=0.000 n=10+10)
      Tar              35.7MB ± 0%       35.1MB ± 0%  -1.64%  (p=0.000 n=10+10)
      XML              45.0MB ± 0%       43.7MB ± 0%  -2.76%  (p=0.000 n=9+10)
      [Geo mean]       80.1MB            78.4MB       -2.04%
      
      name        old allocs/op     new allocs/op     delta
      Template           336k ± 0%         335k ± 0%  -0.31%  (p=0.000 n=9+10)
      Unicode            339k ± 0%         339k ± 0%  -0.05%  (p=0.000 n=10+10)
      GoTypes           1.18M ± 0%        1.18M ± 0%  -0.26%  (p=0.000 n=10+10)
      Compiler          4.96M ± 0%        4.94M ± 0%  -0.24%  (p=0.000 n=10+10)
      SSA               12.6M ± 0%        12.5M ± 0%  -0.30%  (p=0.000 n=10+10)
      Flate              224k ± 0%         223k ± 0%  -0.30%  (p=0.000 n=10+10)
      GoParser           282k ± 0%         281k ± 0%  -0.32%  (p=0.000 n=10+10)
      Reflect            965k ± 0%         963k ± 0%  -0.27%  (p=0.000 n=9+10)
      Tar                331k ± 0%         330k ± 0%  -0.27%  (p=0.000 n=10+10)
      XML                393k ± 0%         392k ± 0%  -0.26%  (p=0.000 n=10+10)
      [Geo mean]         763k              761k       -0.26%
      
      Updates #24543.
      
      Change-Id: I4cfd2461510d3c026a262760bca225dc37482341
      Reviewed-on: https://go-review.googlesource.com/110178
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      75dadbec
    • Austin Clements's avatar
      cmd/compile: incrementally compact liveness maps · 3c36b8be
      Austin Clements authored
      The per-Value slice of liveness maps is currently one of the largest
      sources of allocation in the compiler. On cmd/compile/internal/ssa,
      it's 5% of overall allocation, or 75MB in total. Enabling liveness
      maps everywhere significantly increased this allocation footprint,
      which in turn slowed down the compiler.
      
      Improve this by compacting the liveness maps after every block is
      processed. There are typically very few distinct liveness maps, so
      compacting the maps after every block, rather than at the end of the
      function, can significantly reduce these allocations.
      
      Passes toolstash -cmp.
      
      name        old time/op       new time/op       delta
      Template          198ms ± 2%        196ms ± 1%  -1.11%  (p=0.008 n=9+10)
      Unicode           100ms ± 1%         99ms ± 1%  -0.94%  (p=0.015 n=8+9)
      GoTypes           703ms ± 2%        695ms ± 1%  -1.15%  (p=0.000 n=10+10)
      Compiler          3.38s ± 3%        3.33s ± 0%  -1.66%  (p=0.000 n=10+9)
      SSA               7.96s ± 1%        7.93s ± 1%    ~ 	(p=0.113 n=9+10)
      Flate             134ms ± 1%        132ms ± 1%  -1.30%  (p=0.000 n=8+10)
      GoParser          165ms ± 2%        163ms ± 1%  -1.32%  (p=0.013 n=9+10)
      Reflect           462ms ± 2%        459ms ± 0%  -0.65%  (p=0.036 n=9+8)
      Tar               188ms ± 2%        186ms ± 1%    ~     (p=0.173 n=8+10)
      XML               243ms ± 7%        239ms ± 1%    ~     (p=0.684 n=10+10)
      [Geo mean]        421ms             416ms       -1.10%
      
      name        old alloc/op      new alloc/op      delta
      Template         38.0MB ± 0%       36.5MB ± 0%  -3.98%  (p=0.000 n=10+10)
      Unicode          30.3MB ± 0%       29.6MB ± 0%  -2.21% 	(p=0.000 n=10+10)
      GoTypes           125MB ± 0%        120MB ± 0%  -4.51% 	(p=0.000 n=10+9)
      Compiler          575MB ± 0%        546MB ± 0%  -5.06% 	(p=0.000 n=10+10)
      SSA              1.64GB ± 0%       1.55GB ± 0%  -4.97% 	(p=0.000 n=10+10)
      Flate            25.9MB ± 0%       25.0MB ± 0%  -3.41% 	(p=0.000 n=10+10)
      GoParser         30.7MB ± 0%       29.5MB ± 0%  -3.97% 	(p=0.000 n=10+10)
      Reflect          84.1MB ± 0%       81.9MB ± 0%  -2.64% 	(p=0.000 n=10+10)
      Tar              37.0MB ± 0%       35.8MB ± 0%  -3.27% 	(p=0.000 n=10+9)
      XML              47.2MB ± 0%       45.0MB ± 0%  -4.57% 	(p=0.000 n=10+10)
      [Geo mean]       83.2MB            79.9MB       -3.86%
      
      name        old allocs/op     new allocs/op     delta
      Template           337k ± 0%         337k ± 0%  -0.06%  (p=0.000 n=10+10)
      Unicode            340k ± 0%         340k ± 0%  -0.01% 	(p=0.014 n=10+10)
      GoTypes           1.18M ± 0%        1.18M ± 0%  -0.04% 	(p=0.000 n=10+10)
      Compiler          4.97M ± 0%        4.97M ± 0%  -0.03% 	(p=0.000 n=10+10)
      SSA               12.3M ± 0%        12.3M ± 0%  -0.01% 	(p=0.000 n=10+10)
      Flate              226k ± 0%         225k ± 0%  -0.09% 	(p=0.000 n=10+10)
      GoParser           283k ± 0%         283k ± 0%  -0.06% 	(p=0.000 n=10+9)
      Reflect            972k ± 0%         971k ± 0%  -0.04% 	(p=0.000 n=10+8)
      Tar                333k ± 0%         332k ± 0%  -0.05% 	(p=0.000 n=10+9)
      XML                395k ± 0%         395k ± 0%  -0.04% 	(p=0.000 n=10+10)
      [Geo mean]         764k              764k       -0.04%
      
      Updates #24543.
      
      Change-Id: I6fdc46e4ddb6a8eea95d38242345205eb8397f0b
      Reviewed-on: https://go-review.googlesource.com/110177
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      3c36b8be
    • Austin Clements's avatar
      cmd/compile: abstract bvec sets · 3c4aaf8a
      Austin Clements authored
      This moves the bvec hash table logic out of Liveness.compact and into
      a bvecSet type. Furthermore, the bvecSet type has the ability to grow
      dynamically, which the current implementation doesn't. In addition to
      making the code cleaner, this will make it possible to incrementally
      compact liveness bitmaps.
      
      Passes toolstash -cmp
      
      Updates #24543.
      
      Change-Id: I46c53e504494206061a1f790ae4a02d768a65681
      Reviewed-on: https://go-review.googlesource.com/110176
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      3c4aaf8a
    • Austin Clements's avatar
      cmd/compile: single pass over Blocks in Liveness.epilogue · 577c05ca
      Austin Clements authored
      Currently Liveness.epilogue makes three passes over the Blocks, but
      there's no need to do this. Combine them into a single pass. This
      eliminates the need for blockEffects.lastbitmapindex, but, more
      importantly, will let us incrementally compact the liveness bitmaps
      and significantly reduce allocatons in Liveness.epilogue.
      
      Passes toolstash -cmp.
      
      Updates #24543.
      
      Change-Id: I27802bcd00d23aa122a7ec16cdfd739ae12dd7aa
      Reviewed-on: https://go-review.googlesource.com/110175
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      577c05ca
    • Hana Kim's avatar
      cmd/vendor/README: temporary instruction for update · 51be90a2
      Hana Kim authored
      Until vgo sorts out and cleans up the vendoring process.
      
      Ran govendor to update packages the cmd/pprof depends on
      which resulted in deletion of some of unnecessary files.
      
      Change-Id: Idfba53e94414e90a5e280222750a6df77e979a16
      Reviewed-on: https://go-review.googlesource.com/114079
      Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com>
      Reviewed-by: 's avatarDaniel Theophanes <kardianos@gmail.com>
      51be90a2
    • David Chase's avatar
      cmd/link: revert DWARF version to 2 for .debug_lines · 402dd10a
      David Chase authored
      On OSX 10.12 and earlier, paired with XCode 9.0,
      specifying DWARF version 3 causes dsymutil to misbehave.
      Version 2 appears to be good enough to allow processing
      of the prologue_end opcode on (at least one version of)
      Linux and OSX 10.13.
      
      Fixes #25451.
      
      Change-Id: Ic760e34248393a5386be96351c8e492da1d3413b
      Reviewed-on: https://go-review.googlesource.com/114015Reviewed-by: 's avatarAlessandro Arzilli <alessandro.arzilli@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      402dd10a
    • Martin Möhrmann's avatar
      internal/cpu: fix test build on ppc64 · 685ecc7f
      Martin Möhrmann authored
      The runtime import is unused.
      
      Change-Id: I37fe210256ddafa579d9e6d64f3f0db78581974e
      Reviewed-on: https://go-review.googlesource.com/114175
      Run-TryBot: Martin Möhrmann <moehrmann@google.com>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      685ecc7f
    • Austin Clements's avatar
      runtime: fix defer matching of leaf functions on LR machines · e391fade
      Austin Clements authored
      Traceback matches the defer stack with the function call stack using
      the SP recorded in defer frames when the defer frame is created.
      However, on LR machines this is ambiguous: if function A pushes a
      defer and then calls function B, where B is a leaf function with a
      zero-sized frame, then both A and B have the same SP and will *both*
      match the defer on the defer stack. Since traceback unwinds through B
      first, it will incorrectly match up the defer with B's frame instead
      of A's frame.
      
      Where this goes particularly wrong is if function B causes a signal
      that turns into a panic (e.g., a nil pointer dereference). In order to
      handle the fact that we may not have a liveness map at the location
      that caused the signal and injected a sigpanic call, traceback has
      logic to unwind the panicking frame's continuation PC to the PC where
      the most recent defer was pushed (this is safe because the frame is
      dead other than any defers it pushed). However, if traceback
      mis-matches the defer stack, it winds up reporting the B's
      continuation PC is in A. If the runtime then uses this continuation PC
      to look up PCDATA in B, it will panic because the PC is out of range
      for B. This failure mode can be seen in
      sync/atomic/atomic_test.go:TestNilDeref. An example failure is:
      https://build.golang.org/log/8e07a762487839252af902355f6b1379dbd463c5
      
      This CL fixes all of this by recognizing that a function that pushes a
      defer must also have a non-zero-sized frame and using this fact to
      refine the defer matching logic.
      
      Fixes the build for arm64, mips, mipsle, ppc64, ppc64le, and s390x.
      
      Fixes #25499.
      
      Change-Id: Iff7c01d08ad42f3de22b3a73658cc2f674900101
      Reviewed-on: https://go-review.googlesource.com/114078
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      e391fade
    • Martin Möhrmann's avatar
      internal/cpu: add experiment to disable CPU features with GODEBUGCPU · f045ddc6
      Martin Möhrmann authored
      Needs the go compiler to be build with GOEXPERIMENT=debugcpu to be active.
      
      The GODEBUGCPU environment variable can be used to disable usage of
      specific processor features in the Go standard library.
      This is useful for testing and benchmarking different code paths that
      are guarded by internal/cpu variable checks.
      
      Use of processor features can not be enabled through GODEBUGCPU.
      
      To disable usage of AVX and SSE41 cpu features on GOARCH amd64 use:
      GODEBUGCPU=avx=0,sse41=0
      
      The special "all" option can be used to disable all options:
      GODEBUGCPU=all=0
      
      Updates #12805
      Updates #15403
      
      Change-Id: I699c2e6f74d98472b6fb4b1e5ffbf29b15697aab
      Reviewed-on: https://go-review.googlesource.com/91737
      Run-TryBot: Martin Möhrmann <moehrmann@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      f045ddc6
    • Zhongpeng Lin's avatar
      go/build: call ctxt.match for checking file name constraints · 3d15f768
      Zhongpeng Lin authored
      This makes the checking of build tags in file names consistent to that of the build tags in `// +build` line.
      
      Fixed #25461
      
      Change-Id: Iba14d1050f8aba44e7539ab3b8711af1980ccfe4
      GitHub-Last-Rev: 11b14e239dd85e11e669919aab45494aee7c59a3
      GitHub-Pull-Request: golang/go#25480
      Reviewed-on: https://go-review.googlesource.com/113818
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      3d15f768
    • Martin Sucha's avatar
      crypto/x509: document fields used in CreateCertificate · a10d3906
      Martin Sucha authored
      The added fields are used in buildExtensions so
      should be documented too.
      
      Fixes #21363
      
      Change-Id: Ifcc11da5b690327946c2488bcf4c79c60175a339
      Reviewed-on: https://go-review.googlesource.com/113916Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      a10d3906