1. 23 Sep, 2017 2 commits
  2. 22 Sep, 2017 19 commits
  3. 21 Sep, 2017 8 commits
    • Joe Tsai's avatar
      archive/tar: perform test for hole-detection on specific builders · 718d9de6
      Joe Tsai authored
      The test for hole-detection is heavily dependent on whether the
      OS and underlying FS provides support for it.
      Even on Linux, which has support for SEEK_HOLE and SEEK_DATA,
      the underlying filesystem may not have support for it.
      In order to avoid an ever-changing game of whack-a-mole,
      we whitelist the specific builders that we expect the test to pass on.
      
      Updates #21964
      
      Change-Id: I7334e8532c96cc346ea83aabbb81b719685ad7e5
      Reviewed-on: https://go-review.googlesource.com/65270
      Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      718d9de6
    • Hiroshi Ioka's avatar
      cmd/nm: accept macho files which don't have symbol table in the archive · 2f7b57e9
      Hiroshi Ioka authored
      After https://golang.org/cl/64793, we started to include Mach-O object
      files which don't have symbol table into cgo archive.
      However, toolchains didn't handle those files yet.
      
      Fixes #21959
      
      Change-Id: Ibb2f6492f1fa59368f2dfd4cff19783997539875
      Reviewed-on: https://go-review.googlesource.com/65170Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      2f7b57e9
    • Gabriel Aszalos's avatar
      bytes: add documentation to reader methods · dd5a86f1
      Gabriel Aszalos authored
      Some methods that were used to implement various `io` interfaces in the
      Reader were documented, whereas others were not. This change adds
      documentation to all the missing methods used to implement these
      interfaces.
      
      Change-Id: I2dac6e328542de3cd87e89510651cd6ba74a7b7d
      Reviewed-on: https://go-review.googlesource.com/65231Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      dd5a86f1
    • Joe Tsai's avatar
      archive/tar: make check for hole detection support more liberal · fdecab6e
      Joe Tsai authored
      On most Unix OSes, lseek reports EINVAL when lacking SEEK_HOLE support.
      However, there are reports that ENOTTY is reported instead.
      Rather than tracking down every possible errno that may be used to
      represent "not supported", just treat any non-nil error as meaning
      that there is no support. This is the same strategy taken by the
      GNU and BSD tar tools.
      
      Fixes #21958
      
      Change-Id: Iae68afdc934042f52fa914fca45f0ca89220c383
      Reviewed-on: https://go-review.googlesource.com/65191
      Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      fdecab6e
    • Ben Shi's avatar
      cmd/compile: optimized ARM code with BFX/BFXU · 97324858
      Ben Shi authored
      BFX&BFXU were introduced in ARMv6T2. A single BFX or BFXU is
      more efficiently than a pair of left-shift/right-shift in bit
      field extraction.
      
      This patch implements this optimization. And the benchmark tests
      show big improvement in special cases and little change in total.
      
      1. There is big improvement in a special test case.
      name                     old time/op    new time/op    delta
      BFX-4                       665µs ± 1%     595µs ± 0%  -10.61%  (p=0.000 n=20+20)
      (The test case: https://github.com/benshi001/ugo1/blob/master/bfx_test.go)
      
      2. The compilecmp benchmark shows no regression.
      name        old time/op       new time/op       delta
      Template          2.33s ± 2%        2.34s ± 2%    ~     (p=0.356 n=9+10)
      Unicode           1.32s ± 2%        1.30s ± 2%    ~     (p=0.139 n=9+8)
      GoTypes           7.77s ± 1%        7.76s ± 1%    ~     (p=0.780 n=10+9)
      Compiler          37.3s ± 1%        37.1s ± 1%    ~     (p=0.211 n=10+9)
      SSA               84.3s ± 2%        84.3s ± 2%    ~     (p=0.842 n=10+9)
      Flate             1.45s ± 1%        1.45s ± 3%    ~     (p=0.853 n=10+10)
      GoParser          1.83s ± 2%        1.83s ± 2%    ~     (p=0.739 n=10+10)
      Reflect           5.08s ± 2%        5.09s ± 2%    ~     (p=0.720 n=9+10)
      Tar               2.44s ± 1%        2.44s ± 2%    ~     (p=0.684 n=10+10)
      XML               2.62s ± 2%        2.62s ± 2%    ~     (p=0.529 n=10+10)
      [Geo mean]        4.80s             4.79s       -0.06%
      
      name        old user-time/op  new user-time/op  delta
      Template          2.76s ± 2%        2.75s ± 3%    ~     (p=0.893 n=10+10)
      Unicode           1.63s ± 1%        1.60s ± 1%  -2.07%  (p=0.000 n=8+9)
      GoTypes           9.54s ± 1%        9.52s ± 1%    ~     (p=0.215 n=10+10)
      Compiler          46.0s ± 1%        46.0s ± 1%    ~     (p=0.853 n=10+10)
      SSA                110s ± 1%         110s ± 1%    ~     (p=0.838 n=10+10)
      Flate             1.69s ± 3%        1.69s ± 5%    ~     (p=0.957 n=10+10)
      GoParser          2.15s ± 2%        2.15s ± 2%    ~     (p=0.749 n=10+10)
      Reflect           6.03s ± 1%        5.99s ± 2%    ~     (p=0.060 n=9+10)
      Tar               3.02s ± 2%        2.99s ± 2%    ~     (p=0.214 n=10+10)
      XML               3.10s ± 2%        3.08s ± 2%    ~     (p=0.732 n=9+10)
      [Geo mean]        5.82s             5.79s       -0.41%
      
      name        old text-bytes    new text-bytes    delta
      HelloSize         589kB ± 0%        589kB ± 0%    ~     (all equal)
      
      name        old data-bytes    new data-bytes    delta
      HelloSize        5.46kB ± 0%       5.46kB ± 0%    ~     (all equal)
      
      name        old bss-bytes     new bss-bytes     delta
      HelloSize        76.9kB ± 0%       76.9kB ± 0%    ~     (all equal)
      
      name        old exe-bytes     new exe-bytes     delta
      HelloSize        1.03MB ± 0%       1.03MB ± 0%    ~     (all equal)
      
      3. The go1 benchmark shows little change in total. (excluding noise)
      name                     old time/op    new time/op    delta
      BinaryTree17-4              41.5s ± 1%     41.6s ± 1%    ~     (p=0.373 n=30+26)
      Fannkuch11-4                23.6s ± 1%     23.6s ± 1%  +0.28%  (p=0.003 n=29+30)
      FmtFprintfEmpty-4           826ns ± 1%     827ns ± 1%    ~     (p=0.155 n=30+30)
      FmtFprintfString-4         1.35µs ± 1%    1.35µs ± 1%    ~     (p=0.499 n=30+30)
      FmtFprintfInt-4            1.43µs ± 1%    1.41µs ± 1%  -1.19%  (p=0.000 n=30+30)
      FmtFprintfIntInt-4         2.15µs ± 1%    2.11µs ± 1%  -1.78%  (p=0.000 n=30+30)
      FmtFprintfPrefixedInt-4    2.21µs ± 1%    2.21µs ± 1%    ~     (p=0.881 n=30+30)
      FmtFprintfFloat-4          4.41µs ± 1%    4.44µs ± 0%  +0.64%  (p=0.000 n=30+30)
      FmtManyArgs-4              8.06µs ± 1%    8.06µs ± 0%    ~     (p=0.871 n=30+30)
      GobDecode-4                 103ms ± 1%     104ms ± 2%  +0.54%  (p=0.013 n=28+29)
      GobEncode-4                92.4ms ± 1%    92.6ms ± 1%    ~     (p=0.447 n=30+29)
      Gzip-4                      4.17s ± 1%     4.06s ± 1%  -2.56%  (p=0.000 n=29+30)
      Gunzip-4                    603ms ± 1%     602ms ± 1%    ~     (p=0.423 n=30+30)
      HTTPClientServer-4          688µs ± 2%     674µs ± 3%  -2.09%  (p=0.000 n=29+30)
      JSONEncode-4                237ms ± 1%     237ms ± 1%    ~     (p=0.061 n=29+30)
      JSONDecode-4                907ms ± 1%     910ms ± 1%    ~     (p=0.061 n=30+30)
      Mandelbrot200-4            41.7ms ± 0%    41.7ms ± 0%  +0.19%  (p=0.000 n=24+20)
      GoParse-4                  45.7ms ± 2%    45.5ms ± 2%  -0.29%  (p=0.005 n=30+30)
      RegexpMatchEasy0_32-4      1.27µs ± 0%    1.27µs ± 0%  +0.12%  (p=0.031 n=30+30)
      RegexpMatchEasy0_1K-4      7.77µs ± 4%    7.73µs ± 3%    ~     (p=0.169 n=30+30)
      RegexpMatchEasy1_32-4      1.29µs ± 1%    1.29µs ± 1%    ~     (p=0.126 n=30+30)
      RegexpMatchEasy1_1K-4      10.4µs ± 3%    10.3µs ± 2%  -1.32%  (p=0.004 n=30+29)
      RegexpMatchMedium_32-4     2.06µs ± 0%    2.06µs ± 0%    ~     (p=0.071 n=30+30)
      RegexpMatchMedium_1K-4      531µs ± 1%     530µs ± 0%    ~     (p=0.121 n=30+23)
      RegexpMatchHard_32-4       28.7µs ± 1%    28.6µs ± 1%  -0.21%  (p=0.001 n=30+27)
      RegexpMatchHard_1K-4        860µs ± 1%     857µs ± 1%    ~     (p=0.105 n=30+27)
      Revcomp-4                  67.3ms ± 2%    67.3ms ± 2%    ~     (p=0.805 n=29+29)
      Template-4                  1.08s ± 1%     1.08s ± 1%    ~     (p=0.260 n=30+30)
      TimeParse-4                7.04µs ± 0%    7.04µs ± 0%    ~     (p=0.315 n=30+30)
      TimeFormat-4               13.2µs ± 1%    13.2µs ± 1%    ~     (p=0.077 n=30+30)
      [Geo mean]                  715µs          713µs       -0.30%
      
      name                     old speed      new speed      delta
      GobDecode-4              7.42MB/s ± 1%  7.38MB/s ± 2%  -0.54%  (p=0.011 n=28+29)
      GobEncode-4              8.30MB/s ± 1%  8.29MB/s ± 1%    ~     (p=0.484 n=30+29)
      Gzip-4                   4.65MB/s ± 2%  4.78MB/s ± 1%  +2.73%  (p=0.000 n=30+30)
      Gunzip-4                 32.2MB/s ± 1%  32.2MB/s ± 1%    ~     (p=0.357 n=30+30)
      JSONEncode-4             8.18MB/s ± 1%  8.19MB/s ± 1%    ~     (p=0.052 n=29+30)
      JSONDecode-4             2.14MB/s ± 1%  2.13MB/s ± 1%    ~     (p=0.074 n=30+29)
      GoParse-4                1.27MB/s ± 1%  1.27MB/s ± 2%    ~     (p=0.618 n=24+30)
      RegexpMatchEasy0_32-4    25.2MB/s ± 0%  25.2MB/s ± 0%  -0.12%  (p=0.031 n=30+30)
      RegexpMatchEasy0_1K-4     132MB/s ± 5%   132MB/s ± 2%    ~     (p=0.171 n=30+30)
      RegexpMatchEasy1_32-4    24.8MB/s ± 1%  24.9MB/s ± 1%    ~     (p=0.106 n=30+30)
      RegexpMatchEasy1_1K-4    98.4MB/s ± 3%  99.6MB/s ± 4%  +1.19%  (p=0.011 n=30+30)
      RegexpMatchMedium_32-4    483kB/s ± 1%   484kB/s ± 1%    ~     (p=0.426 n=30+30)
      RegexpMatchMedium_1K-4   1.93MB/s ± 1%  1.93MB/s ± 0%    ~     (p=0.157 n=30+17)
      RegexpMatchHard_32-4     1.12MB/s ± 1%  1.12MB/s ± 0%  +0.33%  (p=0.001 n=30+24)
      RegexpMatchHard_1K-4     1.19MB/s ± 1%  1.19MB/s ± 1%    ~     (p=0.290 n=30+30)
      Revcomp-4                37.8MB/s ± 2%  37.8MB/s ± 1%    ~     (p=0.815 n=29+29)
      Template-4               1.80MB/s ± 1%  1.80MB/s ± 1%    ~     (p=0.586 n=30+30)
      [Geo mean]               6.80MB/s       6.81MB/s       +0.25%
      
      fixes #20966
      
      Change-Id: Idb5567bbe988c875315b8c98c128957cd474ccc5
      Reviewed-on: https://go-review.googlesource.com/64950Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      97324858
    • Michael Darakananda's avatar
      context: fix references to "d" in WithDeadline docs · eca45997
      Michael Darakananda authored
      Docs of WithDeadline refers to variable "d" which does not exist
      in the docs.
      
      This commit renames the time argument to "d" to make the doc work.
      
      Change-Id: Ifd2c1be7d2e3f7dfb21cd9bb8ff7fc5039c8d3bd
      Reviewed-on: https://go-review.googlesource.com/65130
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      eca45997
    • Hiroshi Ioka's avatar
      cmd/nm: handle cgo archive · 589ea936
      Hiroshi Ioka authored
      This CL also make cmd/nm accept PE object file.
      
      Fixes #21706
      
      Change-Id: I4a528b7d53da1082e61523ebeba02c4c514a43a7
      Reviewed-on: https://go-review.googlesource.com/64890
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      589ea936
    • Avelino's avatar
      cmd/link: Grouping declaration of variables on ld/pe.go · 6a537c1d
      Avelino authored
      Change-Id: I33284d3154db43b2b89418c5076df79407e7cf41
      Reviewed-on: https://go-review.googlesource.com/60931
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      6a537c1d
  4. 20 Sep, 2017 11 commits
    • Cherry Zhang's avatar
      cmd/compile: use a counter to track whether writebarrier rewriting is done · 99c757ad
      Cherry Zhang authored
      Use a counter, instead of a loop, to see whether there are more
      writebarrier ops in the current block that need to be rewritten.
      
      No visible change in normal compiler speed benchmarks.
      
      Passes toolstash -cmp on std cmd.
      
      Fixes #20416.
      
      Change-Id: Ifbbde23611cd668c35b8a4a3e9a92726bfe19956
      Reviewed-on: https://go-review.googlesource.com/60310Reviewed-by: default avatarDavid Chase <drchase@google.com>
      99c757ad
    • Matthew Dempsky's avatar
      cmd/compile/internal/gc: update comment in plive.go · 93e97ef0
      Matthew Dempsky authored
      onebitwalktype1 no longer appears to be a bottleneck for the mentioned
      test case. In fact, we appear to compile it significantly faster now
      than Go 1.4 did (~1.8s vs ~3s).
      
      Fixes #21951.
      
      Change-Id: I315313e906092a7d6ff4ff60a918d80a4cff7a7f
      Reviewed-on: https://go-review.googlesource.com/65110Reviewed-by: default avatarKeith Randall <khr@golang.org>
      93e97ef0
    • Joe Tsai's avatar
      archive/tar: add Header.DetectSparseHoles and Header.PunchSparseHoles · 1eacf788
      Joe Tsai authored
      To support the detection and creation of sparse files,
      add two new methods:
      	func Header.DetectSparseHoles(*os.File) error
      	func Header.PunchSparseHoles(*os.File) error
      
      DetectSparseHoles is intended to be used after FileInfoHeader
      prior to serializing the Header with WriteHeader.
      For each OS, it uses specialized logic to detect
      the location of sparse holes. On most Unix systems, it uses
      SEEK_HOLE and SEEK_DATA to query for the holes.
      On Windows, it uses a specialized the FSCTL_QUERY_ALLOCATED_RANGES
      syscall to query for all the holes.
      
      PunchSparseHoles is intended to be used after Reader.Next
      prior to populating the file with Reader.WriteTo.
      On Windows, this uses the FSCTL_SET_ZERO_DATA syscall.
      On other operating systems it simply truncates the file
      to the end-offset of SparseHoles.
      
      DetectSparseHoles and PunchSparseHoles are added as methods on
      Header because they are heavily tied to the operating system,
      for which there is already an existing precedence for
      (since FileInfoHeader makes uses of OS-specific details).
      
      Fixes #13548
      
      Change-Id: I98a321dd1ce0165f3d143d4edadfda5e7db67746
      Reviewed-on: https://go-review.googlesource.com/60871
      Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      1eacf788
    • Agniva De Sarker's avatar
      math: implement fast path for Exp · d2f31721
      Agniva De Sarker authored
      - using FMA and AVX instructions if available to speed-up
      Exp calculation on amd64
      
      - using a data table instead of #define'ed constants because
      these instructions do not support loading floating point immediates.
      One has to use a memory operand / register.
      
      - Benchmark results on Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz:
      
      Original vs New (non-FMA path)
      name  old time/op    new time/op    delta
      Exp     16.0ns ± 1%    16.1ns ± 3%   ~     (p=0.308 n=9+10)
      
      Original vs New (FMA path)
      name  old time/op    new time/op    delta
      Exp     16.0ns ± 1%    13.7ns ± 2%  -14.80%  (p=0.000 n=9+10)
      
      Change-Id: I3d8986925d82b39b95ee979ae06f59d7e591d02e
      Reviewed-on: https://go-review.googlesource.com/62590Reviewed-by: default avatarIlya Tocar <ilya.tocar@intel.com>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      d2f31721
    • Ilya Tocar's avatar
      cmd/compile/internal/gc: better inliner diagnostics · 475df0eb
      Ilya Tocar authored
      When debugging inliner with -m -m print cost of complex functions,
      instead of simple "function too complex". This helps to understand,
      how close to inlining is this particular function.
      
      Change-Id: I6871f69b5b914d23fd0b43a24d7c6fc928f4b716
      Reviewed-on: https://go-review.googlesource.com/63330
      Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
      Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      475df0eb
    • Ian Lance Taylor's avatar
      cmd/go: stop linking cgo objects together with ld -r · 8e5ac83d
      Ian Lance Taylor authored
      https://golang.org/cl/5822049 introduced the idea of linking together
      all the cgo objects with -r, while also linking against -lgcc. This
      was to fix http://golang.org/issue/3261: cgo code that requires libgcc
      would break when using internal linking.
      
      This approach introduced https://golang.org/issue/9510: multiple
      different cgo packages could include the same libgcc object, leading
      to a multiple definition error during the final link. That problem was
      fixed by https://golang.org/cl/16741, as modified by
      https://golang.org/cl/16993, which did the link against libgcc only
      during the final link.
      
      After https://golang.org/cl/16741, and, on Windows, the later
      https://golang.org/cl/26670, ld -r no longer does anything useful.
      
      So, remove it.
      
      Doing this revealed that running ld -r on Darwin simplifies some
      relocs by making them specific to a symbol rather than a section.
      Correct the handling of unsigned relocations in internal linking mode
      by offsetting by the symbol value. This only really comes up when
      using the internal linker with C code that initializes a variable to
      the address of a local constant, such as a C string (as in const char
      *s = "str";). This change does not affect the normal case of external
      linking, where the Add field is ignored. The test case is
      misc/cgo/test/issue6612.go in internal linking mode.
      
      The cmd/internal/goobj test can now see an external object with no
      symbol table; fix it to not crash in that case.
      
      Change-Id: I15e5b7b5a8f48136bc14bf4e1c4c473d5eb58062
      Reviewed-on: https://go-review.googlesource.com/64793
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      8e5ac83d
    • Ilya Tocar's avatar
      runtime: make nextFreeFast inlinable · 101fbc2c
      Ilya Tocar authored
      https://golang.org/cl/22598 made nextFreeFast inlinable.
      But during https://golang.org/cl/63611 it was discovered, that it is no longer inlinable.
      Reduce number of statements below inlining threshold to make it inlinable again.
      Also update tests, to prevent regressions.
      Doesn't reduce readability.
      
      Change-Id: Ia672784dd48ed3b1ab46e390132f1094fe453de5
      Reviewed-on: https://go-review.googlesource.com/65030
      Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarDaniel Martí <mvdan@mvdan.cc>
      101fbc2c
    • Michael Munday's avatar
      cmd/compile: fix large global variables in -linkshared mode on s390x · 55ac5b50
      Michael Munday authored
      When rewriting loads and stores accessing global variables to use the
      GOT we were making use of REGTMP (R10). Unfortunately loads and stores
      with large offsets (larger than 20-bits) were also using REGTMP,
      causing it to be clobbered and subsequently a segmentation fault.
      
      This can be fixed by using REGTMP2 (R11) for the rewrite. This is fine
      because REGTMP2 only has a couple of uses in the assembler (division,
      high multiplication and storage-to-storage instructions). We didn't
      use REGTMP2 originally because it used to be used more frequently,
      in particular for stores of constants to memory. However we have now
      eliminated those uses.
      
      This was found while writing a test case for CL 63030. That test case
      is included in this CL.
      
      Change-Id: I13956f1f3ca258a7c8a7ff0a7570d2848adf7f68
      Reviewed-on: https://go-review.googlesource.com/65011Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      55ac5b50
    • Matthew Dempsky's avatar
      cmd/compile: change liveness-related functions into methods · 0d73f1e3
      Matthew Dempsky authored
      No functional change; just making the code slightly more idiomatic.
      
      Passes toolstash-check.
      
      Change-Id: I66d14a8410bbecf260d0ea5683564aa413ce5747
      Reviewed-on: https://go-review.googlesource.com/65070
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      0d73f1e3
    • Matthew Dempsky's avatar
      cmd/compile: refactor onebitwalktype1 · 39983cf4
      Matthew Dempsky authored
      The existing logic tried to advance the offset for each variable's
      width, but then tried to undo this logic with the array and struct
      handling code. It can all be much simpler by only worrying about
      computing offsets within the array and struct code.
      
      While here, include a short-circuit for zero-width arrays to fix a
      pedantic compiler failure case.
      
      Passes toolstash-check.
      
      Fixes #20739.
      
      Change-Id: I98af9bb512a33e3efe82b8bf1803199edb480640
      Reviewed-on: https://go-review.googlesource.com/64471
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      39983cf4
    • Matthew Dempsky's avatar
      cmd/compile/internal/syntax: fix source buffer refilling · e06a64a4
      Matthew Dempsky authored
      The previous code seems to have an off-by-1 in it somewhere, the
      consequence being that we didn't properly preserve all of the old
      buffer contents that we intended to.
      
      After spending a while looking at the existing window-shifting logic,
      I wasn't able to understand exactly how it was supposed to work or
      where the issue was, so I rewrote it to be (at least IMO) more
      obviously correct.
      
      Fixes #21938.
      
      Change-Id: I1ed7bbc1e1751a52ab5f7cf0411ae289586dc345
      Reviewed-on: https://go-review.googlesource.com/64830
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      e06a64a4