1. 08 Mar, 2016 7 commits
    • Matthew Dempsky's avatar
      cmd/compile: fix lineno restoration after SSA compilation · beabd872
      Matthew Dempsky authored
      Without SSA:
      
      $ go build -a -gcflags='-S -ssa=0' runtime 2>&1 | grep 'TEXT.*""\.init(SB)'
              0x0000 00000 ($GOROOT/src/runtime/write_err.go:14)        TEXT    "".init(SB), $88-0
      
      With SSA, before this CL:
      
      $ go build -a -gcflags='-S -ssa=1' runtime 2>&1 | grep 'TEXT.*""\.init(SB)'
              0x0000 00000 ($GOROOT/src/runtime/traceback.go:608)       TEXT    "".init(SB), $152-0
      
      With SSA, after this CL:
      
      $ go build -a -gcflags='-S -ssa=1' runtime 2>&1 | grep 'TEXT.*""\.init(SB)'
              0x0000 00000 ($GOROOT/src/runtime/write_err.go:14)        TEXT    "".init(SB), $152-0
      
      Change-Id: Ida3541e03a1af6ffc753ee5c3abeb653459edbf6
      Reviewed-on: https://go-review.googlesource.com/20321
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      beabd872
    • Aaron Zinman's avatar
      darwin/amd64: fix text-relocation issues for c-archive libraries
 · aea4222f
      Aaron Zinman authored
      The existing implementation deals with absolute relocations in __TEXT
      for darwin/amd64 in build-mode c-shared, but it ignores c-archive.
      This results in issues when trying to use a c-archive in an iOS
      app on the 64-bit simulator. This patch adds c-archive to the
      handling of this issue.
      
      Fixes #14217
      
      Change-Id: I2e4d5193caa531171ad22fd0cd420a8bfb4646a6
      Reviewed-on: https://go-review.googlesource.com/19206Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      aea4222f
    • Matthew Dempsky's avatar
      cmd/internal/obj: add As type for assembly opcodes · 0d9258a8
      Matthew Dempsky authored
      Passes toolstash/buildall.
      
      Fixes #14692.
      
      Change-Id: I4352678d8251309f2b8b7793674c550fac948006
      Reviewed-on: https://go-review.googlesource.com/20350Reviewed-by: default avatarDave Cheney <dave@cheney.net>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      0d9258a8
    • David Chase's avatar
      cmd/compile: Tinkering with schedule for debug and regalloc · b1785a50
      David Chase authored
      This adds a heap-based proper priority queue to the
      scheduler which made a relatively easy to test quite a few
      heuristics that "ought to work well".  For go tools
      themselves (which may not be representative) the heuristic
      that works best is (1) in line-number-order, then (2) from
      more to fewer args, then (3) in variable ID order.  Trying
      to improve this with information about use at end of
      blocks turned out to be fruitless -- all of my naive
      attempts at using that information turned out worse than
      ignoring it.  I can confirm that the stores-early heuristic
      tends to help; removing it makes the results slightly worse.
      
      My metric is code size reduction, which I take to mean fewer
      spills from register allocation.  It's not uniform.
      Here's the endpoints for "vet" from one set of pretty-good
      heuristics (this is representative at least).
      
      -2208 time.parse 13472 15680 -14.081633%
      -1514 runtime.pclntab 1002058 1003572 -0.150861%
      -352 time.Time.AppendFormat 9952 10304 -3.416149%
      -112 runtime.runGCProg 1984 2096 -5.343511%
      -64 regexp/syntax.(*parser).factor 7264 7328 -0.873362%
      -44 go.string.alldata 238630 238674 -0.018435%
      
      48 math/big.(*Float).round 1376 1328 3.614458%
      48 text/tabwriter.(*Writer).writeLines 1232 1184 4.054054%
      48 math/big.shr 832 784 6.122449%
      88 go.func.* 75174 75086 0.117199%
      96 time.Date 1968 1872 5.128205%
      
      Overall there appears to be an 0.1% decrease in text size.
      No timings yet, and given the distribution of size reductions
      it might make sense to wait on those.
      
      addr2line  text (code) = -4392 bytes (-0.156273%)
      api  text (code) = -5502 bytes (-0.147644%)
      asm  text (code) = -5254 bytes (-0.187810%)
      cgo  text (code) = -4886 bytes (-0.148846%)
      compile  text (code) = -1577 bytes (-0.019346%) * changed
      cover  text (code) = -5236 bytes (-0.137992%)
      dist  text (code) = -5015 bytes (-0.167829%)
      doc  text (code) = -5180 bytes (-0.182121%)
      fix  text (code) = -5000 bytes (-0.215148%)
      link  text (code) = -5092 bytes (-0.152712%)
      newlink  text (code) = -5204 bytes (-0.196986%)
      nm  text (code) = -4398 bytes (-0.156018%)
      objdump  text (code) = -4582 bytes (-0.155046%)
      pack  text (code) = -4503 bytes (-0.294287%)
      pprof  text (code) = -6314 bytes (-0.085177%)
      trace  text (code) = -5856 bytes (-0.097818%)
      vet  text (code) = -5696 bytes (-0.117334%)
      yacc  text (code) = -4971 bytes (-0.213817%)
      
      This leaves me sorely tempted to look into a "real" scheduler
      to try to do a better job, but I think it might make more
      sense to look into getting loop information into the
      register allocator instead.
      
      Fixes #14577.
      
      Change-Id: I5238b83284ce76dea1eb94084a8cd47277db6827
      Reviewed-on: https://go-review.googlesource.com/20240
      Run-TryBot: David Chase <drchase@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      b1785a50
    • Todd Neal's avatar
      cmd/compile: fix load combining from a non-zero pointer offset · 481fe590
      Todd Neal authored
      When the pointer offset is non-zero in the small loads, we need to add the offset
      when converting to the larger load.
      
      Fixes #14694
      
      Change-Id: I5ba8bcb3b9ce26c7fae0c4951500b9ef0fed54cd
      Reviewed-on: https://go-review.googlesource.com/20333Reviewed-by: default avatarKeith Randall <khr@golang.org>
      481fe590
    • Burcu Dogan's avatar
      runtime: listen 127.0.0.1 instead of localhost on android · 6df80387
      Burcu Dogan authored
      Fixes #14486.
      Related to #14485.
      
      Change-Id: I2dd77b0337aebfe885ae828483deeaacb500b12a
      Reviewed-on: https://go-review.googlesource.com/20340Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      6df80387
    • Matthew Dempsky's avatar
      cmd/internal/obj: stop using as+ALAST as an opcode · e8531316
      Matthew Dempsky authored
      Currently, package obj reserves a range of 1<<12 opcodes for each
      target architecture.  E.g., mips64 has [6<<12, 7<<12).
      
      However, because mips.ABEQ and mips.ALAST are both within that range,
      the expression mips.ABEQ+mips.ALAST in turn falls (far) outside that
      range around 12<<12, meaning it could theoretically collide with
      another arch's opcodes.
      
      More practically, it's a problem because 12<<12 overflows an int16,
      which hampers fixing #14692.  (We could also just switch to uint16 to
      avoid the overflow, but that still leaves the first problem.)
      
      As a workaround, use Michael Hudson-Doyle's solution from
      https://golang.org/cl/20182 and use negative values for these variant
      instructions.
      
      Passes toolstash -cmp for GOARCH=arm and GOARCH=mips64.
      
      Updates #14692.
      
      Change-Id: Iad797d10652360109fa4db19d4d1edb6529fc2c0
      Reviewed-on: https://go-review.googlesource.com/20345
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      e8531316
  2. 07 Mar, 2016 27 commits
  3. 06 Mar, 2016 6 commits