1. 23 Oct, 2018 17 commits
  2. 22 Oct, 2018 14 commits
    • Ian Lance Taylor's avatar
      cmd/go: update private copy of goosList · cc558fed
      Ian Lance Taylor authored
      This copies the change to goosList in CL 138115 to the private copy in
      cmd/go.
      
      The change introducing the private copy was apparently not made with
      Gerrit, but can be seen at
      https://github.com/golang/vgo/commit/08359e782fb601567c57f56beb540841c2416d92.
      That change says "This is adapted from code in go/build and the rest
      of cmd/go. At some point, we should deduplicate them."
      
      Doing another copy for now, rather than something more complex
      involving cmd/dist, pending that deduplication.
      
      Change-Id: I9b6e1f63a3a68c002b60a9a97aa367c5cc7801c9
      Reviewed-on: https://go-review.googlesource.com/c/143759
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBryan C. Mills <bcmills@google.com>
      cc558fed
    • Clément Chigot's avatar
      cmd/cgo: add AIX operating system · ce4ef9ad
      Clément Chigot authored
      This commit adds AIX operating system to cmd/cgo package for ppc64
      architecture.
      
      It doesn't fully adapt cgo tool to AIX. But it allows to use
      go tool cgo -godefs which is really usefull for others packages.
      
      Update: #25893
      
      Change-Id: I38e289cf0122d143ba100986d08229b51b03ddfc
      Reviewed-on: https://go-review.googlesource.com/c/138731
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      ce4ef9ad
    • Rob Pike's avatar
      encoding/gob: delete out of memory test · 956af978
      Rob Pike authored
      Now that the library allows much larger data, it can kill
      machines with less memory.
      
      Fixes #28321
      
      Change-Id: I98e1a5fdf812fd75adfb22bf01542423de405fe2
      Reviewed-on: https://go-review.googlesource.com/c/143817Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      Reviewed-by: 's avatarDmitri Shuralyov <dmitshur@golang.org>
      956af978
    • Robert Griesemer's avatar
      go/types: report error for invalid use of ... in parameter lists · 553237aa
      Robert Griesemer authored
      The parser accepts ...T types in parameter lists whereever a type
      is permitted; this matches the syntax and allows for more tolerant
      parsing and error recovery.
      
      go/types on the other hand assumed that the parser would report
      those errors and assumed any outstanding such errors would be due
      to otherwise manipulated ASTs leading to invalid ASTs.
      
      go/types further assumed that a parameter list (a, b, c ...int)
      was permitted (a couple of tests used such parameter lists).
      
      With this CL, go/types now correctly refuses invalid parameter lists.
      
      Fixes #28281.
      
      Change-Id: Ib788255f7b7819fdb972c7801bb153a53ce2ddf7
      Reviewed-on: https://go-review.googlesource.com/c/143857
      Run-TryBot: Robert Griesemer <gri@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      553237aa
    • Clément Chigot's avatar
      cmd/go: add AIX operating system · 9258c3f9
      Clément Chigot authored
      This commit adds AIX operating system to cmd/go package for ppc64
      architecture.
      
      Updates: #25893
      
      Change-Id: I2605d10a7833fa2eb197f6db4a52d5919cf93614
      Reviewed-on: https://go-review.googlesource.com/c/138732
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      9258c3f9
    • Genevieve Luyt's avatar
      doc: use the new log functions · b917bdd3
      Genevieve Luyt authored
      The log interface was changed in https://golang.org/cl/2419042.
      
      Change-Id: I3eaddd8a5cfcae961db16555fb1b0ce6770b6334
      Reviewed-on: https://go-review.googlesource.com/c/143777Reviewed-by: 's avatarRob Pike <r@golang.org>
      b917bdd3
    • Robert Griesemer's avatar
      cmd/compile: s/eqtype/types.Identical/ (fix build) · ddf83eeb
      Robert Griesemer authored
      TBR=khr
      
      Change-Id: Ia5a08f1acd9f37c466829754990733330264f546
      Reviewed-on: https://go-review.googlesource.com/c/143758Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      ddf83eeb
    • Robert Griesemer's avatar
      go/types: copy embedded methods unchanged when completing interfaces · e9b39417
      Robert Griesemer authored
      The existing code adjusted the receivers of embedded interface methods
      to match the embedding interface type. That required cloning (shallow
      copying) the embedded methods and destroyed their object identity in
      the process. Don't do this anymore. The consequence to clients is that
      they might see different methods of an interface having different
      receiver types; they are always the type of the interface that explicitly
      declared the method (which is what one usually would want, anyway).
      
      Fixes #28282.
      
      Change-Id: I2e6f1497f46affdf7510547a64601de3787367db
      Reviewed-on: https://go-review.googlesource.com/c/143757Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      e9b39417
    • Alessandro Arzilli's avatar
      cmd/compile,cmd/link: remove statictmp variables from symbol table. · ffbf479a
      Alessandro Arzilli authored
      Removes statictmp variables from debug_info and the final symbol table.
      
      Fixes #27800
      
      Change-Id: I302c59a04bc3f460e7085fef241f937bbf30421d
      Reviewed-on: https://go-review.googlesource.com/c/142577
      Run-TryBot: Alessandro Arzilli <alessandro.arzilli@gmail.com>
      Run-TryBot: Heschi Kreinick <heschi@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarHeschi Kreinick <heschi@google.com>
      ffbf479a
    • Keith Randall's avatar
      cmd/compile: in append(f()), type convert appended items · dca769dc
      Keith Randall authored
      The second and subsequent return values from f() need to be
      converted to the element type of the first return value from f()
      (which must be a slice).
      
      Fixes #22327
      
      Change-Id: I5c0a424812c82c1b95b6d124c5626cfc4408bdb6
      Reviewed-on: https://go-review.googlesource.com/c/142718Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      dca769dc
    • fanzha02's avatar
      cmd/internal/obj/arm64: reclassify 32-bit/64-bit constants · 86ce1cb0
      fanzha02 authored
      Current assembler saves constants in Offset which type is int64,
      causing 32-bit constants have a incorrect class. This CL reclassifies
      constants when opcodes are 32-bit variant, like MOVW, ANDW and
      ADDW, etc. Besides, this CL encodes some constants of ADDCON class
      as MOVs instructions.
      
      This CL changes the assembler behavior as follows.
      
      1. go assembler ADDW $MOVCON, Rn, Rd
         previous version: MOVD $MOVCON, Rtmp; ADDW Rtmp, Rn, Rd
         current version: MOVW $MOVCON, Rtmp; ADDW Rtmp, Rn, Rd
      
      2. go assembly MOVW $0xaaaaffff, R1
         previous version: treats $0xaaaaffff as VCON, encodes it as MOVW 0x994, R1 (loads it from pool).
         current version: treats $0xaaaaffff as MOVCON, and encodes it into MOVW instructions.
      
      3. go assembly MOVD $0x210000, R1
         previous version: treats $0x210000 as ADDCON, loads it from pool
         current version: treats $0x210000 as MOVCON, and encodes it into MOVD instructions.
      
      Add the test cases.
      
      1. Binary size before/after.
      binary                          size change
      pkg/linux_arm64                 -1.534KB
      pkg/tool/linux_arm64            -0.718KB
      go                              -0.32KB
      gofmt                           no change
      
      2. go1 benchmark result.
      name                     old time/op    new time/op    delta
      BinaryTree17-8              6.26s ± 1%     6.28s ± 1%     ~     (p=0.105 n=10+10)
      Fannkuch11-8                5.40s ± 0%     5.39s ± 0%   -0.29%  (p=0.028 n=9+10)
      FmtFprintfEmpty-8          94.5ns ± 0%    95.0ns ± 0%   +0.51%  (p=0.000 n=10+9)
      FmtFprintfString-8          163ns ± 1%     159ns ± 1%   -2.06%  (p=0.000 n=10+9)
      FmtFprintfInt-8             200ns ± 1%     196ns ± 1%   -1.99%  (p=0.000 n=9+10)
      FmtFprintfIntInt-8          292ns ± 3%     284ns ± 1%   -2.87%  (p=0.001 n=10+9)
      FmtFprintfPrefixedInt-8     422ns ± 1%     420ns ± 1%   -0.59%  (p=0.015 n=10+10)
      FmtFprintfFloat-8           458ns ± 0%     463ns ± 1%   +1.19%  (p=0.000 n=9+10)
      FmtManyArgs-8              1.37µs ± 1%    1.35µs ± 1%   -1.85%  (p=0.000 n=10+10)
      GobDecode-8                15.5ms ± 1%    15.3ms ± 1%   -1.82%  (p=0.000 n=10+10)
      GobEncode-8                11.7ms ± 5%    11.7ms ± 2%     ~     (p=0.549 n=10+9)
      Gzip-8                      622ms ± 0%     624ms ± 0%   +0.23%  (p=0.000 n=10+9)
      Gunzip-8                   73.6ms ± 0%    73.8ms ± 1%     ~     (p=0.077 n=9+9)
      HTTPClientServer-8          115µs ± 1%     115µs ± 1%     ~     (p=0.796 n=10+10)
      JSONEncode-8               31.1ms ± 2%    28.7ms ± 1%   -7.98%  (p=0.000 n=10+9)
      JSONDecode-8                145ms ± 0%     145ms ± 1%     ~     (p=0.447 n=9+10)
      Mandelbrot200-8            9.67ms ± 0%    9.60ms ± 0%   -0.76%  (p=0.000 n=9+9)
      GoParse-8                  7.56ms ± 1%    7.58ms ± 0%   +0.21%  (p=0.035 n=10+9)
      RegexpMatchEasy0_32-8       208ns ±10%     222ns ± 0%     ~     (p=0.531 n=10+6)
      RegexpMatchEasy0_1K-8       699ns ± 4%     694ns ± 4%     ~     (p=0.868 n=10+10)
      RegexpMatchEasy1_32-8       186ns ± 8%     190ns ±12%     ~     (p=0.955 n=10+10)
      RegexpMatchEasy1_1K-8      1.13µs ± 1%    1.05µs ± 2%   -6.64%  (p=0.000 n=10+10)
      RegexpMatchMedium_32-8      316ns ± 7%     288ns ± 1%   -8.68%  (p=0.000 n=10+7)
      RegexpMatchMedium_1K-8     90.2µs ± 0%    85.5µs ± 2%   -5.19%  (p=0.000 n=10+10)
      RegexpMatchHard_32-8       5.53µs ± 0%    3.90µs ± 0%  -29.52%  (p=0.000 n=10+10)
      RegexpMatchHard_1K-8        119µs ± 0%     124µs ± 0%   +4.29%  (p=0.000 n=9+10)
      Revcomp-8                   1.07s ± 0%     1.07s ± 0%     ~     (p=0.094 n=9+9)
      Template-8                  162ms ± 1%     160ms ± 2%     ~     (p=0.089 n=10+10)
      TimeParse-8                 756ns ± 2%     763ns ± 1%     ~     (p=0.158 n=10+10)
      TimeFormat-8                758ns ± 1%     746ns ± 1%   -1.52%  (p=0.000 n=10+10)
      
      name                     old speed      new speed      delta
      GobDecode-8              49.4MB/s ± 1%  50.3MB/s ± 1%   +1.84%  (p=0.000 n=10+10)
      GobEncode-8              65.6MB/s ± 5%  65.4MB/s ± 2%     ~     (p=0.549 n=10+9)
      Gzip-8                   31.2MB/s ± 0%  31.1MB/s ± 0%   -0.24%  (p=0.000 n=9+9)
      Gunzip-8                  264MB/s ± 0%   263MB/s ± 1%     ~     (p=0.073 n=9+9)
      JSONEncode-8             62.3MB/s ± 2%  67.7MB/s ± 1%   +8.67%  (p=0.000 n=10+9)
      JSONDecode-8             13.4MB/s ± 0%  13.4MB/s ± 1%     ~     (p=0.508 n=9+10)
      GoParse-8                7.66MB/s ± 1%  7.64MB/s ± 0%   -0.23%  (p=0.049 n=10+9)
      RegexpMatchEasy0_32-8     154MB/s ± 9%   143MB/s ± 3%     ~     (p=0.303 n=10+7)
      RegexpMatchEasy0_1K-8    1.46GB/s ± 4%  1.47GB/s ± 4%     ~     (p=0.912 n=10+10)
      RegexpMatchEasy1_32-8     172MB/s ± 9%   170MB/s ±12%     ~     (p=0.971 n=10+10)
      RegexpMatchEasy1_1K-8     908MB/s ± 1%   972MB/s ± 2%   +7.12%  (p=0.000 n=10+10)
      RegexpMatchMedium_32-8   3.17MB/s ± 7%  3.46MB/s ± 1%   +9.14%  (p=0.000 n=10+7)
      RegexpMatchMedium_1K-8   11.3MB/s ± 0%  12.0MB/s ± 2%   +5.51%  (p=0.000 n=10+10)
      RegexpMatchHard_32-8     5.78MB/s ± 0%  8.21MB/s ± 0%  +41.93%  (p=0.000 n=9+10)
      RegexpMatchHard_1K-8     8.62MB/s ± 0%  8.27MB/s ± 0%   -4.11%  (p=0.000 n=9+10)
      Revcomp-8                 237MB/s ± 0%   237MB/s ± 0%     ~     (p=0.081 n=9+9)
      Template-8               12.0MB/s ± 1%  12.1MB/s ± 2%     ~     (p=0.072 n=10+10)
      
      Change-Id: I080801f520366b42d5f9699954bd33106976a81b
      Reviewed-on: https://go-review.googlesource.com/c/120661
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      86ce1cb0
    • Carlos Eduardo Seo's avatar
      cmd/compile: intrinsify math/big.mulWW on ppc64x · 1e8ecefc
      Carlos Eduardo Seo authored
      This change implements mulWW as an intrinsic for ppc64x. Performance
      numbers below:
      
      name                            old time/op    new time/op    delta
      QuoRem                            4.54µs ±45%    3.22µs ± 0%  -29.22%  (p=0.029 n=4+4)
      ModSqrt225_Tonelli                 765µs ± 3%     757µs ± 0%   -1.02%  (p=0.029 n=4+4)
      ModSqrt225_3Mod4                   231µs ± 0%     231µs ± 0%   -0.10%  (p=0.029 n=4+4)
      ModSqrt231_Tonelli                 789µs ± 0%     788µs ± 0%   -0.14%  (p=0.029 n=4+4)
      ModSqrt231_5Mod8                   267µs ± 0%     267µs ± 0%   -0.13%  (p=0.029 n=4+4)
      Sqrt                              49.5µs ±17%    45.3µs ± 0%   -8.48%  (p=0.029 n=4+4)
      IntSqr/1                          32.2ns ±22%    24.2ns ± 0%  -24.79%  (p=0.029 n=4+4)
      IntSqr/2                          60.6ns ± 0%    60.9ns ± 0%   +0.50%  (p=0.029 n=4+4)
      IntSqr/3                          82.8ns ± 0%    83.3ns ± 0%   +0.51%  (p=0.029 n=4+4)
      IntSqr/5                           122ns ± 0%     121ns ± 0%   -1.22%  (p=0.029 n=4+4)
      IntSqr/8                           227ns ± 0%     226ns ± 0%   -0.44%  (p=0.029 n=4+4)
      IntSqr/10                          300ns ± 0%     298ns ± 0%   -0.67%  (p=0.029 n=4+4)
      IntSqr/20                         1.02µs ± 0%    0.89µs ± 0%  -13.08%  (p=0.029 n=4+4)
      IntSqr/30                         1.73µs ± 0%    1.51µs ± 0%  -12.73%  (p=0.029 n=4+4)
      IntSqr/50                         3.69µs ± 1%    3.29µs ± 0%  -10.70%  (p=0.029 n=4+4)
      IntSqr/80                         7.64µs ± 0%    7.04µs ± 0%   -7.91%  (p=0.029 n=4+4)
      IntSqr/100                        11.1µs ± 0%    10.3µs ± 0%   -7.04%  (p=0.029 n=4+4)
      IntSqr/200                        37.9µs ± 0%    36.4µs ± 0%   -4.13%  (p=0.029 n=4+4)
      IntSqr/300                        69.4µs ± 0%    66.0µs ± 0%   -4.94%  (p=0.029 n=4+4)
      IntSqr/500                         174µs ± 0%     168µs ± 0%   -3.10%  (p=0.029 n=4+4)
      IntSqr/800                         347µs ± 0%     333µs ± 0%   -4.06%  (p=0.029 n=4+4)
      IntSqr/1000                        524µs ± 0%     507µs ± 0%   -3.21%  (p=0.029 n=4+4)
      
      Change-Id: If067452f5b6579ad3a2e9daa76a7ffe6fceae1bb
      Reviewed-on: https://go-review.googlesource.com/c/143217
      Run-TryBot: Giovanni Bajo <rasky@develer.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarGiovanni Bajo <rasky@develer.com>
      1e8ecefc
    • Rob Pike's avatar
      encoding/gob: increase "tooBig" from 1GB to 8GB on 64-bit machines · 3bf9b77c
      Rob Pike authored
      A little shift magic makes it easy to adjust the maximum buffer
      size on machines with larger integers.
      
      Fixes #27635
      
      Change-Id: I1f26b07a363fbb9730df2377052475fa88bbb781
      Reviewed-on: https://go-review.googlesource.com/c/143678
      Run-TryBot: Rob Pike <r@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      3bf9b77c
    • Rob Pike's avatar
      doc: tweak example in Effective Go · 7c2718b1
      Rob Pike authored
      A prior attempt at addressing the issue got bogged down in an
      endless conversation around the subtleties of Read semantics.
      Let's not go there.
      
      Instead, we put the issue to bed, perhaps not in perfect comfort
      but well enough, by moving a line of the example so that even
      if there is a "benign" error as the issue suggests, the loop
      terminates with n and err correctly set.
      
      Fixes #27818
      
      Change-Id: I4a32d56c9e782f17578565d90b22ce531e3d8667
      Reviewed-on: https://go-review.googlesource.com/c/143677Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      7c2718b1
  3. 21 Oct, 2018 1 commit
  4. 20 Oct, 2018 2 commits
  5. 19 Oct, 2018 6 commits
    • Robert Griesemer's avatar
      go/types: temporarily disable a verification in Stdlib test · 2e886891
      Robert Griesemer authored
      Keeps the longtest builder green for now.
      Proper fix to come ASAP.
      
      Also, reword an internal comment that could easily be misread.
      
      Updates #28282.
      
      Change-Id: I8f41c9faa5a3eb638e6204bae3ff374ed49e5177
      Reviewed-on: https://go-review.googlesource.com/c/143478
      Run-TryBot: Robert Griesemer <gri@golang.org>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      2e886891
    • Josh Bleecher Snyder's avatar
      cmd/compile: move argument stack construction to SSA generation · 2578ac54
      Josh Bleecher Snyder authored
      The goal of this change is to move work from walk to SSA,
      and simplify things along the way.
      
      This is hard to accomplish cleanly with small incremental changes,
      so this large commit message aims to provide a roadmap to the diff.
      
      High level description:
      
      Prior to this change, walk was responsible for constructing (most of) the stack for function calls.
      ascompatte gathered variadic arguments into a slice.
      It also rewrote n.List from a list of arguments to a list of assignments to stack slots.
      ascompatte was called multiple times to handle the receiver in a method call.
      reorder1 then introduced temporaries into n.List as needed to avoid smashing the stack.
      adjustargs then made extra stack space for go/defer args as needed.
      
      Node to SSA construction evaluated all the statements in n.List,
      and issued the function call, assuming that the stack was correctly constructed.
      Intrinsic calls had to dig around inside n.List to extract the arguments,
      since intrinsics don't use the stack to make function calls.
      
      This change moves stack construction to the SSA construction phase.
      ascompatte, now called walkParams, does all the work that ascompatte and reorder1 did.
      It handles variadic arguments, inserts the method receiver if needed, and allocates temporaries.
      It does not, however, make any assignments to stack slots.
      Instead, it moves the function arguments to n.Rlist, leaving assignments to temporaries in n.List.
      (It would be better to use Ninit instead of List; future work.)
      During SSA construction, after doing all the temporary assignments in n.List,
      the function arguments are assigned to stack slots by
      constructing the appropriate SSA Value, using (*state).storeArg.
      SSA construction also now handles adjustments for go/defer args.
      This change also simplifies intrinsic calls, since we no longer need to undo walk's work.
      
      Along the way, we simplify nodarg by pushing the fp==1 case to its callers, where it fits nicely.
      
      Generated code differences:
      
      There were a few optimizations applied along the way, the old way.
      f(g()) was rewritten to do a block copy of function results to function arguments.
      And reorder1 avoided introducing the final "save the stack" temporary in n.List.
      
      The f(g()) block copy optimization never actually triggered; the order pass rewrote away g(), so that has been removed.
      
      SSA optimizations mostly obviated the need for reorder1's optimization of avoiding the final temporary.
      The exception was when the temporary's type was not SSA-able;
      in that case, we got a Move into an autotmp and then an immediate Move onto the stack,
      with the autotmp never read or used again.
      This change introduces a new rewrite rule to detect such pointless double Moves
      and collapse them into a single Move.
      This is actually more powerful than the original optimization,
      since the original optimization relied on the imprecise Node.HasCall calculation.
      
      The other significant difference in the generated code is that the stack is now constructed
      completely in SP-offset order. Prior to this change, the stack was constructed somewhat
      haphazardly: first the final argument that Node.HasCall deemed to require a temporary,
      then other arguments, then the method receiver, then the defer/go args.
      SP-offset is probably a good default order. See future work.
      
      There are a few minor object file size changes as a result of this change.
      I investigated some regressions in early versions of this change.
      
      One regression (in archive/tar) was the addition of a single CMPQ instruction,
      which would be eliminated were this TODO from flagalloc to be done:
      	// TODO: Remove original instructions if they are never used.
      
      One regression (in text/template) was an ADDQconstmodify that is now
      a regular MOVQLoad+ADDQconst+MOVQStore, due to an unlucky change
      in the order in which arguments are written. The argument change
      order can also now be luckier, so this appears to be a wash.
      
      All in all, though there will be minor winners and losers,
      this change appears to be performance neutral.
      
      Future work:
      
      Move loading the result of function calls to SSA construction; eliminate OINDREGSP.
      
      Consider pushing stack construction deeper into SSA world, perhaps in an arch-specific pass.
      Among other benefits, this would make it easier to transition to a new calling convention.
      This would require rethinking the handling of stack conflicts and is non-trivial.
      
      Figure out some clean way to indicate that stack construction Stores/Moves
      do not alias each other, so that subsequent passes may do things like
      CSE+tighten shared stack setup, do DSE using non-first Stores, etc.
      This would allow us to eliminate the minor text/template regression.
      
      Possibly make assignments to stack slots not treated as statements by DWARF.
      
      Compiler benchmarks:
      
      name        old time/op       new time/op       delta
      Template          182ms ± 2%        179ms ± 2%  -1.69%  (p=0.000 n=47+48)
      Unicode          86.3ms ± 5%       85.1ms ± 4%  -1.36%  (p=0.001 n=50+50)
      GoTypes           646ms ± 1%        642ms ± 1%  -0.63%  (p=0.000 n=49+48)
      Compiler          2.89s ± 1%        2.86s ± 2%  -1.36%  (p=0.000 n=48+50)
      SSA               8.47s ± 1%        8.37s ± 2%  -1.22%  (p=0.000 n=47+50)
      Flate             122ms ± 2%        121ms ± 2%  -0.66%  (p=0.000 n=47+45)
      GoParser          147ms ± 2%        146ms ± 2%  -0.53%  (p=0.006 n=46+49)
      Reflect           406ms ± 2%        403ms ± 2%  -0.76%  (p=0.000 n=48+43)
      Tar               162ms ± 3%        162ms ± 4%    ~     (p=0.191 n=46+50)
      XML               223ms ± 2%        222ms ± 2%  -0.37%  (p=0.031 n=45+49)
      [Geo mean]        382ms             378ms       -0.89%
      
      name        old user-time/op  new user-time/op  delta
      Template          219ms ± 3%        216ms ± 3%  -1.56%  (p=0.000 n=50+48)
      Unicode           109ms ± 6%        109ms ± 5%    ~     (p=0.190 n=50+49)
      GoTypes           836ms ± 2%        828ms ± 2%  -0.96%  (p=0.000 n=49+48)
      Compiler          3.87s ± 2%        3.80s ± 1%  -1.81%  (p=0.000 n=49+46)
      SSA               12.0s ± 1%        11.8s ± 1%  -2.01%  (p=0.000 n=48+50)
      Flate             142ms ± 3%        141ms ± 3%  -0.85%  (p=0.003 n=50+48)
      GoParser          178ms ± 4%        175ms ± 4%  -1.66%  (p=0.000 n=48+46)
      Reflect           520ms ± 2%        512ms ± 2%  -1.44%  (p=0.000 n=45+48)
      Tar               200ms ± 3%        198ms ± 4%  -0.61%  (p=0.037 n=47+50)
      XML               277ms ± 3%        275ms ± 3%  -0.85%  (p=0.000 n=49+48)
      [Geo mean]        482ms             476ms       -1.23%
      
      name        old alloc/op      new alloc/op      delta
      Template         36.1MB ± 0%       35.3MB ± 0%  -2.18%  (p=0.008 n=5+5)
      Unicode          29.8MB ± 0%       29.3MB ± 0%  -1.58%  (p=0.008 n=5+5)
      GoTypes           125MB ± 0%        123MB ± 0%  -2.13%  (p=0.008 n=5+5)
      Compiler          531MB ± 0%        513MB ± 0%  -3.40%  (p=0.008 n=5+5)
      SSA              2.00GB ± 0%       1.93GB ± 0%  -3.34%  (p=0.008 n=5+5)
      Flate            24.5MB ± 0%       24.3MB ± 0%  -1.18%  (p=0.008 n=5+5)
      GoParser         29.4MB ± 0%       28.7MB ± 0%  -2.34%  (p=0.008 n=5+5)
      Reflect          87.1MB ± 0%       86.0MB ± 0%  -1.33%  (p=0.008 n=5+5)
      Tar              35.3MB ± 0%       34.8MB ± 0%  -1.44%  (p=0.008 n=5+5)
      XML              47.9MB ± 0%       47.1MB ± 0%  -1.86%  (p=0.008 n=5+5)
      [Geo mean]       82.8MB            81.1MB       -2.08%
      
      name        old allocs/op     new allocs/op     delta
      Template           352k ± 0%         347k ± 0%  -1.32%  (p=0.008 n=5+5)
      Unicode            342k ± 0%         339k ± 0%  -0.66%  (p=0.008 n=5+5)
      GoTypes           1.29M ± 0%        1.27M ± 0%  -1.30%  (p=0.008 n=5+5)
      Compiler          4.98M ± 0%        4.87M ± 0%  -2.14%  (p=0.008 n=5+5)
      SSA               15.7M ± 0%        15.2M ± 0%  -2.86%  (p=0.008 n=5+5)
      Flate              233k ± 0%         231k ± 0%  -0.83%  (p=0.008 n=5+5)
      GoParser           296k ± 0%         291k ± 0%  -1.54%  (p=0.016 n=5+4)
      Reflect           1.05M ± 0%        1.04M ± 0%  -0.65%  (p=0.008 n=5+5)
      Tar                343k ± 0%         339k ± 0%  -0.97%  (p=0.008 n=5+5)
      XML                432k ± 0%         426k ± 0%  -1.19%  (p=0.008 n=5+5)
      [Geo mean]         815k              804k       -1.35%
      
      name        old object-bytes  new object-bytes  delta
      Template          505kB ± 0%        505kB ± 0%  -0.01%  (p=0.008 n=5+5)
      Unicode           224kB ± 0%        224kB ± 0%    ~     (all equal)
      GoTypes          1.82MB ± 0%       1.83MB ± 0%  +0.06%  (p=0.008 n=5+5)
      Flate             324kB ± 0%        324kB ± 0%  +0.00%  (p=0.008 n=5+5)
      GoParser          402kB ± 0%        402kB ± 0%  +0.04%  (p=0.008 n=5+5)
      Reflect          1.39MB ± 0%       1.39MB ± 0%  -0.01%  (p=0.008 n=5+5)
      Tar               449kB ± 0%        449kB ± 0%  -0.02%  (p=0.008 n=5+5)
      XML               598kB ± 0%        597kB ± 0%  -0.05%  (p=0.008 n=5+5)
      
      Change-Id: Ifc9d5c1bd01f90171414b8fb18ffe2290d271143
      Reviewed-on: https://go-review.googlesource.com/c/114797
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      2578ac54
    • Denys Smirnov's avatar
      cmd/compile: in wasm, allocate approximately right number of locals for functions · 6c631ae2
      Denys Smirnov authored
      Currently, WASM binary writer requests 16 int registers (locals) and
      16 float registers for every function regardless of how many locals the
      function uses.
      
      This change counts the number of used registers and requests a number
      of locals matching the highest register index. The change has no effect
      on performance and neglectable binary size improvement, but it makes
      WASM code more readable and easy to analyze.
      
      Change-Id: Ic1079623c0d632b215c68482db909fa440892700
      GitHub-Last-Rev: 184634fa918aff74e280904dc2efafcc80735a8b
      GitHub-Pull-Request: golang/go#28116
      Reviewed-on: https://go-review.googlesource.com/c/140999Reviewed-by: 's avatarRichard Musiol <neelance@gmail.com>
      Run-TryBot: Richard Musiol <neelance@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      6c631ae2
    • Robert Griesemer's avatar
      go/types: accept recv base type that is alias to a pointer type · f5636523
      Robert Griesemer authored
      Per the spec clarification https://golang.org/cl/142757 (issue #27995).
      
      Fixes #28251.
      Updates #27995.
      
      Change-Id: Idc142829955f9306a8698c5ed1c24baa8ee2b109
      Reviewed-on: https://go-review.googlesource.com/c/143179Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      f5636523
    • Robert Griesemer's avatar
      go/types: collect type info for type ...T in variadic functions · 0287d8ed
      Robert Griesemer authored
      Because the code type-checks T rather than ...T (and then corrects
      the type to []T "manually"), it didn't automatically record the
      type for the ast.Expr corresponding to ...T. Do it manually.
      
      Fixes #28277.
      
      Change-Id: I3d9aae310c90b01f52d189e70c48dd9007f72207
      Reviewed-on: https://go-review.googlesource.com/c/143317Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      0287d8ed
    • Matthew Dempsky's avatar
      cmd/compile: remove compiling_wrappers · 41c0b9eb
      Matthew Dempsky authored
      It's no longer needed after removing safemode.
      
      Change-Id: I7581d77a86342e3b6d7c632839f5eb7a5c20902e
      Reviewed-on: https://go-review.googlesource.com/c/143397
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      41c0b9eb