1. 09 Oct, 2019 4 commits
  2. 08 Oct, 2019 2 commits
  3. 04 Oct, 2019 23 commits
  4. 03 Oct, 2019 11 commits
    • Cherry Zhang's avatar
      [dev.link] cmd/internal/goobj: support parsing new object file · d7938002
      Cherry Zhang authored
      Add support of parsing new object file format. We use the new
      parser if the magic string matches the new one, otherwise use the
      old one.
      
      The parsed data are still filled into the current goobj API. In
      the future we may consider to change the goobj API to a close
      match of the object file data.
      
      Now objdump and nm commands support new object file format.
      
      For a reference to a symbol defined in another package, with the
      new object file format we don't know its name. Write it as
      pkg.<#nn> for now, where nn is its symbol index.
      
      Change-Id: I06d05b2ca834ba36980da3c5d76aee16c3b0a483
      Reviewed-on: https://go-review.googlesource.com/c/go/+/196031
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarThan McIntosh <thanm@google.com>
      d7938002
    • David Chase's avatar
      cmd/compile: run deadcode before nilcheck for better statement relocation · adc4d2cc
      David Chase authored
      Nilcheck would move statements from NilCheck values to others that
      turned out were already dead, which leads to lost statements.  Better
      to eliminate the dead code first.
      
      One "error" is removed from test/prove.go because the code is
      actually dead, and the additional deadcode pass removes it before
      prove can run.
      
      Change-Id: If75926ca1acbb59c7ab9c8ef14d60a02a0a94f8b
      Reviewed-on: https://go-review.googlesource.com/c/go/+/198479
      Run-TryBot: David Chase <drchase@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarJeremy Faller <jeremy@golang.org>
      adc4d2cc
    • David Chase's avatar
      cmd/compile: make nilcheck more careful about statement relocations · 08a87938
      David Chase authored
      The earlier code was picking nodes that were "poor choices" and
      thus sometimes losing statements altogether.
      
      Change-Id: Ibe5ed800ffbd3c926c0ab1bc10c77d72d3042e45
      Reviewed-on: https://go-review.googlesource.com/c/go/+/198478
      Run-TryBot: David Chase <drchase@google.com>
      Reviewed-by: default avatarJeremy Faller <jeremy@golang.org>
      08a87938
    • David Chase's avatar
      cmd/compile: classify more nodes as "poor choices" for statements · 53bd9151
      David Chase authored
      Aggregate-making nodes that are later decomposed
      are poor choices for statements, because the decomposition
      phase turns them into multiple sub-values, some of which may be
      dead.  Better to look elsewhere for a statement mark.
      
      Change-Id: Ibd9584138ab3d1384548686896a28580a2e43f54
      Reviewed-on: https://go-review.googlesource.com/c/go/+/198477
      Run-TryBot: David Chase <drchase@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarJeremy Faller <jeremy@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      53bd9151
    • David Chase's avatar
      cmd/compile: pick position of implicit break statements more carefully · 6139019e
      David Chase authored
      The previous version used the position of the switch statement,
      which makes for potentially jumpy stepping and introduces a large
      number of statements repeating the line (tricky for inserting
      breaks).  It also shared a single OBREAK node and this was not
      really a syntax "tree".
      
      This improves both the nostmt test (by 6 lines) and
      reduces the total badness score from dwarf-goodness (by about 200).
      
      Change-Id: I1f71b231a26f152bdb6ce9bc8f95828bb222f665
      Reviewed-on: https://go-review.googlesource.com/c/go/+/188218
      Run-TryBot: David Chase <drchase@google.com>
      Reviewed-by: default avatarJeremy Faller <jeremy@golang.org>
      6139019e
    • David Chase's avatar
      cmd/compile: refine statement marking in numberlines · f7f85bdc
      David Chase authored
      1) An empty block is treated as not-a-statement unless its line differs
      from at least one of its predecessors (it might make sense to
      rearrange branches in predecessors, but that is a different issue).
      
      2) When iterating forward to choose a "good" place for a statement,
      actually check that the chosen place is in fact good.
      
      3) Refactor same line and same file into methods on XPos and Pos.
      
      This reduces the failure rate of ssa/stmtlines_test by 7-ish lines.
      (And interacts favorably with later debugging CLs.)
      
      Change-Id: Idb7cca7068f6fc9fbfdbe25bc0da15bcfc7b9d4a
      Reviewed-on: https://go-review.googlesource.com/c/go/+/188217
      Run-TryBot: David Chase <drchase@google.com>
      Reviewed-by: default avatarJeremy Faller <jeremy@golang.org>
      f7f85bdc
    • Matthew Dempsky's avatar
      cmd/compile: change size diagnostic to use benchmark format · 3ad35082
      Matthew Dempsky authored
      Makes it easier to run
      
          go build -a -gcflags=-d=export std |& grep ^BenchmarkExportSize
      
      and get useful output for feeding into benchstat.
      
      Change-Id: I2b52e8f5ff33b7ccb6c25b18e464513344bd9ad9
      Reviewed-on: https://go-review.googlesource.com/c/go/+/198698Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      3ad35082
    • Meng Zhuo's avatar
      internal/bytealg: (re)adding mips64x compare implementation · a1b1ba7d
      Meng Zhuo authored
      The original CL of mips64x compare function has been reverted due to wrong
      implement for little endian.
      Original CL: https://go-review.googlesource.com/c/go/+/196837
      
      name                         old time/op    new time/op    delta
      BytesCompare/1                 28.9ns ± 4%    22.1ns ± 0%    -23.60%  (p=0.000 n=9+8)
      BytesCompare/2                 34.6ns ± 0%    23.1ns ± 0%    -33.25%  (p=0.000 n=8+10)
      BytesCompare/4                 54.6ns ± 0%    40.8ns ± 0%    -25.27%  (p=0.000 n=8+8)
      BytesCompare/8                 73.9ns ± 0%    49.1ns ± 0%    -33.56%  (p=0.000 n=8+8)
      BytesCompare/16                 113ns ± 0%      24ns ± 0%    -79.20%  (p=0.000 n=9+9)
      BytesCompare/32                 190ns ± 0%      26ns ± 0%    -86.53%  (p=0.000 n=10+10)
      BytesCompare/64                 345ns ± 0%      44ns ± 0%    -87.19%  (p=0.000 n=10+8)
      BytesCompare/128                654ns ± 0%      52ns ± 0%    -91.97%  (p=0.000 n=9+8)
      BytesCompare/256               1.27µs ± 0%    0.07µs ± 0%    -94.14%  (p=0.001 n=8+9)
      BytesCompare/512               2.51µs ± 0%    0.12µs ± 0%    -95.26%  (p=0.000 n=9+10)
      BytesCompare/1024              4.99µs ± 0%    0.21µs ± 0%    -95.85%  (p=0.000 n=8+10)
      BytesCompare/2048              9.94µs ± 0%    0.38µs ± 0%    -96.14%  (p=0.000 n=8+8)
      CompareBytesEqual               105ns ± 0%      64ns ± 0%    -39.43%  (p=0.000 n=10+9)
      CompareBytesToNil              34.8ns ± 1%    38.6ns ± 3%    +11.01%  (p=0.000 n=10+10)
      CompareBytesEmpty              33.6ns ± 3%    36.6ns ± 0%     +8.77%  (p=0.000 n=10+8)
      CompareBytesIdentical          29.7ns ± 0%    40.5ns ± 1%    +36.45%  (p=0.000 n=10+8)
      CompareBytesSameLength         69.1ns ± 0%    51.8ns ± 0%    -25.04%  (p=0.000 n=10+9)
      CompareBytesDifferentLength    69.8ns ± 0%    52.5ns ± 0%    -24.79%  (p=0.000 n=10+8)
      CompareBytesBigUnaligned       5.15ms ± 0%    2.19ms ± 0%    -57.59%  (p=0.000 n=9+9)
      CompareBytesBig                5.28ms ± 0%    0.28ms ± 0%    -94.64%  (p=0.000 n=8+8)
      CompareBytesBigIdentical       29.7ns ± 0%    36.9ns ± 2%    +24.11%  (p=0.000 n=8+10)
      
      name                         old speed      new speed      delta
      CompareBytesBigUnaligned      204MB/s ± 0%   480MB/s ± 0%   +135.77%  (p=0.000 n=9+9)
      CompareBytesBig               198MB/s ± 0%  3704MB/s ± 0%  +1765.97%  (p=0.000 n=8+8)
      CompareBytesBigIdentical     35.3TB/s ± 0%  28.4TB/s ± 2%    -19.44%  (p=0.000 n=8+10)
      
      Fixes #34549
      
      Change-Id: I2ef29f13cdd4229745ac2d018bb53c76f2ff1209
      Reviewed-on: https://go-review.googlesource.com/c/go/+/197557Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      a1b1ba7d
    • Meng Zhuo's avatar
      cmd/asm: add VLD[1-4]R vector instructions on arm64 · 2bf7a925
      Meng Zhuo authored
      This change adds VLD1R, VLD2R, VLD3R, VLD4R
      
      Change-Id: Ie19e9ae02fdfc94b9344acde8c9938849efb0bf0
      Reviewed-on: https://go-review.googlesource.com/c/go/+/181697
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      2bf7a925
    • Cherry Zhang's avatar
      [dev.link] cmd/internal/obj: write object file in new format · 2c484c03
      Cherry Zhang authored
      If -newobj is set, write object file in new format, which uses
      indices for symbol references instead of symbol names. The file
      format is described at the beginning of
      cmd/internal/goobj2/objfile.go.
      
      A new package, cmd/internal/goobj2, is introduced for reading and
      writing new object files. (The package name is temporary.) It is
      written in a way that trys to make the encoding as regular as
      possible, and the reader and writer as symmetric as possible.
      
      This is incomplete, and currently nothing will consume the new
      object file.
      
      Change-Id: Ifefedbf6456d760d15a9f40a28af6486c93100fe
      Reviewed-on: https://go-review.googlesource.com/c/go/+/196030
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarThan McIntosh <thanm@google.com>
      2c484c03
    • Bryan C. Mills's avatar
      Revert "cmd/compile: walk the progs to generate debug_lines" · 5fe3b49a
      Bryan C. Mills authored
      This reverts CL 196661.
      
      Reason for revert: broke TestGdb* tests on mips64le, ppc64le, and s390x builders.
      
      Change-Id: I3b5c97c840819a0d407b943f7cf7e2d97f06042d
      Reviewed-on: https://go-review.googlesource.com/c/go/+/198697
      Run-TryBot: Bryan C. Mills <bcmills@google.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      5fe3b49a