Commit Graph

8800 Commits

Author SHA1 Message Date
Robert Griesemer 37d452c3e9 cmd/compile: reduce allocs to c85b77c (pre-fmt.go change) levels
Linker and reflect info generation (reflect.go) relies on formatting
of types (tconv). The fmt.Format based approach introduces extra
allocations, which matter in those cases. Resurrected sconv and tconv
code from commit c85b77c (fmt.go only); and adjusted it slightly.
The formatter-based approach is still used throughout the rest of the
compiler, but reflect.go now uses the tconv method that simply returns
the desired string.

(The timing data below may not be accurate; I've included it only for
comparison with the numbers in issue #16897).

name       old time/op     new time/op     delta
Template       297ms ± 2%      288ms ± 3%  -3.12%        (p=0.000 n=27+29)
Unicode        155ms ± 5%      150ms ± 5%  -3.26%        (p=0.000 n=30+30)
GoTypes        1.00s ± 3%      0.95s ± 3%  -4.51%        (p=0.000 n=28+29)

name       old alloc/op    new alloc/op    delta
Template      46.8MB ± 0%     46.5MB ± 0%  -0.65%        (p=0.000 n=28+30)
Unicode       37.9MB ± 0%     37.8MB ± 0%  -0.24%        (p=0.000 n=29+30)
GoTypes        144MB ± 0%      143MB ± 0%  -0.68%        (p=0.000 n=30+30)

name       old allocs/op   new allocs/op   delta
Template        469k ± 0%       446k ± 0%  -5.01%        (p=0.000 n=29+30)
Unicode         375k ± 0%       369k ± 0%  -1.62%        (p=0.000 n=30+28)
GoTypes        1.47M ± 0%      1.37M ± 0%  -6.29%        (p=0.000 n=30+30)

The code for sconv/tconv in fmt.go now closely match the code from c85b77c
again; except that the functions are now methods. Removing the use of
the bytes.Buffer in tconv and special-caseing interface{} has helped a
small amount as well:

name       old time/op     new time/op     delta
Template       299ms ± 3%      288ms ± 3%  -3.83%        (p=0.000 n=29+29)
Unicode        156ms ± 5%      150ms ± 5%  -3.56%        (p=0.000 n=30+30)
GoTypes        960ms ± 2%      954ms ± 3%  -0.58%        (p=0.037 n=26+29)

name       old alloc/op    new alloc/op    delta
Template      46.6MB ± 0%     46.5MB ± 0%  -0.22%        (p=0.000 n=30+30)
Unicode       37.8MB ± 0%     37.8MB ± 0%    ~           (p=0.075 n=30+30)
GoTypes        143MB ± 0%      143MB ± 0%  -0.31%        (p=0.000 n=30+30)

name       old allocs/op   new allocs/op   delta
Template        447k ± 0%       446k ± 0%  -0.28%        (p=0.000 n=30+30)
Unicode         369k ± 0%       369k ± 0%  -0.03%        (p=0.032 n=30+28)
GoTypes        1.38M ± 0%      1.37M ± 0%  -0.35%        (p=0.000 n=29+30)

Comparison between c85b77c and now (see issue #16897):

name       old time/op     new time/op     delta
Template       307ms ± 4%      288ms ± 3%  -6.24%  (p=0.000 n=29+29)
Unicode        164ms ± 4%      150ms ± 5%  -8.20%  (p=0.000 n=30+30)
GoTypes        1.01s ± 3%      0.95s ± 3%  -5.72%  (p=0.000 n=30+29)

name       old alloc/op    new alloc/op    delta
Template      46.8MB ± 0%     46.5MB ± 0%  -0.66%  (p=0.000 n=29+30)
Unicode       37.8MB ± 0%     37.8MB ± 0%  -0.13%  (p=0.000 n=30+30)
GoTypes        143MB ± 0%      143MB ± 0%  -0.11%  (p=0.000 n=30+30)

name       old allocs/op   new allocs/op   delta
Template        444k ± 0%       446k ± 0%  +0.48%  (p=0.000 n=30+30)
Unicode         369k ± 0%       369k ± 0%  +0.09%  (p=0.000 n=30+28)
GoTypes        1.35M ± 0%      1.37M ± 0%  +1.47%  (p=0.000 n=30+30)

There's still a small increase (< 1.5%) for GoTypes but pending a complete
rewrite of fmt.go, this seems ok again.

Fixes #16897.

Change-Id: I7e0e56cd1b9f981252eded917f5752259d402354
Reviewed-on: https://go-review.googlesource.com/29087
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-13 00:02:54 +00:00
Keith Randall c345a3913f cmd/compile: get rid of BlockCall
No need for it, we can treat calls as (mostly) normal values
that take a memory and return a memory.

Lowers the number of basic blocks needed to represent a function.
"go test -c net/http" uses 27% fewer basic blocks.
Probably doesn't affect generated code much, but should help
various passes whose running time and/or space depends on
the number of basic blocks.

Fixes #15631

Change-Id: I0bf21e123f835e2cfa382753955a4f8bce03dfa6
Reviewed-on: https://go-review.googlesource.com/28950
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
2016-09-12 23:27:02 +00:00
Keith Randall 6ca7c2055b cmd/compile: fix tuple-generating flag ops as clobbering flags
If an op generates a tuple, and part of that tuple is of flags type,
then treat the op as clobbering flags.

Normally this doesn't matter because we do:

v1 = ADDS        <int32, flags>
v2 = Select0 v1  <int32>
v3 = Select1 v1  <flags>

And v3 will do the right clobbering of flags.  But in the rare
cases where we issue a tuple-with-flag op and the flag portion
is dead, then we never issue a Select1.  But v1 still clobbers flags,
so we need to respect that.

Fixes builder failure in CL 28950.

Change-Id: I589089fd81aaeaaa9750bb8d85e7b10199aaa002
Reviewed-on: https://go-review.googlesource.com/29083
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2016-09-12 22:41:03 +00:00
Matthew Dempsky 1ee5446414 cmd/compile: remove incannedimport
This used to be used to give special semantics to the builtin
definitions of package runtime and unsafe, but none of those are
relevant anymore:

- The builtin runtime and unsafe packages do not risk triggering false
  import cycles since they no longer contain `import "runtime"`.

- bimport.go never creates ODCLTYPE, so no need to special case them.

- "incannedimport != 0" is only true when "importpkg != nil" anyway,
  so "incannedimport == 0 && importpkg == nil" is equivalent to just
  "importpkg == nil".

Change-Id: I076f15dd705d4962e7a4c33972e304ef67e7effb
Reviewed-on: https://go-review.googlesource.com/29084
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-09-12 21:35:10 +00:00
David Crawshaw 4c83d29144 cmd/dist: disable test of internal PIE linking
Updates #17068

Change-Id: I61b75ec07ca8705a678677d262e11b16848cddf3
Reviewed-on: https://go-review.googlesource.com/29079
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
2016-09-12 21:06:11 +00:00
Matthew Dempsky 6758eedf89 cmd/compile: remove Pointer from builtin/unsafe.go
We already explicitly construct the "unsafe.Pointer" type in typeinit
because we need it for Types[TUNSAFEPTR]. No point in also having it
in builtin/unsafe.go if it just means (*importer).importtype needs to
fix it.

Change-Id: Ife8a5a73cbbe2bfcabe8b25ee4f7e0f5fd0570b4
Reviewed-on: https://go-review.googlesource.com/29082
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-09-12 20:44:28 +00:00
Matthew Dempsky b11c79fd07 cmd/compile: deduplicate importtype and (*importer).importtype
Change-Id: I7bfb0e5e71fc26448b0d5d3801cd6e50c8b48f5d
Reviewed-on: https://go-review.googlesource.com/29078
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-09-12 20:31:21 +00:00
Robert Griesemer 36b32911bd cmd/compile: update fmt.go internal documentation
No code changes.

Change-Id: I7a22b3fbd6d727b276c7559f064cb0fdf385c02b
Reviewed-on: https://go-review.googlesource.com/28955
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-12 20:07:47 +00:00
Robert Griesemer 6537e18f02 cmd/compile: rewrite %1v and %2v formats to %S and %L (short and long)
- also consistently use %v instead of %s when we have a (gc) Formatter
- rewrite done automatically using Formats test in -u (update) mode
- manual update of format strings that were not single string constants
- updated fmt.go, fmt_test.go accordingly
- fmt_test: permit "%T" always

Change-Id: I8f0704286aba5704600ad0c4a4484005b79b905d
Reviewed-on: https://go-review.googlesource.com/28954
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-12 20:07:25 +00:00
Robert Griesemer af8ca3387a cmd/compile: improved format string handling, faster operation
- only accept a-z, A-Z as format verbs
- blacklist vendored math package (no need to include it)

Change-Id: Ica0fcbfe712369f79dd1d3472dfd4759b8bc3752
Reviewed-on: https://go-review.googlesource.com/28953
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-12 20:06:30 +00:00
Robert Griesemer 8458a387e3 cmd/compile: make fmt_test work on entire compiler
- process all directories recursively

Change-Id: I27a737013d17fd3c2cc8ae9de4722dcbe989e6e5
Reviewed-on: https://go-review.googlesource.com/28789
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-12 19:57:07 +00:00
Cherry Zhang 8ff4260777 cmd/compile: intrinsify Ctz, Bswap on ARM
Atomic ops on ARM are implemented with kernel calls, so they are
not intrinsified.

Change-Id: I0e7cc2e5526ae1a3d24b4b89be1bd13db071f8ef
Reviewed-on: https://go-review.googlesource.com/28977
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
2016-09-12 19:26:31 +00:00
David Crawshaw d185cc3b64 cmd/link: disable internal PIE for now
There's more work to do.

Updates #17068

Change-Id: I4e16c0e8e9ac739e1fe266224c3769f6c5b2e070
Reviewed-on: https://go-review.googlesource.com/29076
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-09-12 18:21:29 +00:00
Michael Munday 43bdfa9337 cmd/asm, cmd/internal/obj/s390x: add new s390x instructions for SSA
This commit adds the following instructions to support the new SSA
backend for s390x:

32-bit operations:
ADDW
SUBW
NEGW
FNEGS

Conditional moves:
MOVDEQ
MOVDGE
MOVDGT
MOVDLE
MOVDLT
MOVDNE

Unordered branches (for floating point comparisons):
BLEU
BLTU

Modulo operations:
MODW
MODWU
MODD
MODDU

The modulo operations might be removed in a future commit because
I'd like to change DIV to produce a tuple once the old backend is
removed.

This commit also removes uses of REGZERO from the assembler. They
aren't necessary and R0 will be used as a GPR by SSA.

Change-Id: I05756c1cbb74bf4a35fc492f8f0cd34b50763dc9
Reviewed-on: https://go-review.googlesource.com/29075
Run-TryBot: Michael Munday <munday@ca.ibm.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-09-12 17:12:59 +00:00
Josh Bleecher Snyder dfc56a4cd3 cmd/compile: statically initialize some interface values
When possible, emit static data rather than
init functions for interface values.

This:

* cuts 32k off cmd/go
* removes several error values from runtime init
* cuts the size of the image/color/palette compiled package from 103k to 34k
* reduces the time to build the package in #15520 from 8s to 1.5s

Fixes #6289
Fixes #15528

Change-Id: I317112da17aadb180c958ea328ab380f83e640b4
Reviewed-on: https://go-review.googlesource.com/26668
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-12 14:31:26 +00:00
Josh Bleecher Snyder 62ba15a492 cmd/compile: add more non-returning runtime calls
This list now matches the one in popt.go.

Change-Id: Ib24de531cc35252f0ef276e5c6d247654b021533
Reviewed-on: https://go-review.googlesource.com/28965
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2016-09-12 13:26:12 +00:00
Josh Bleecher Snyder 2e4dc86bfb cmd/compile: add Node.IsMethod helper
Changes generated with eg:

func before(n *gc.Node) bool { return n.Type.Recv() != nil }
func after(n *gc.Node) bool  { return n.IsMethod() }

func before(n *gc.Node) bool { return n.Type.Recv() == nil }
func after(n *gc.Node) bool  { return !n.IsMethod() }

Change-Id: I28e544490d17bbdc06ab11ed32464af5802ab206
Reviewed-on: https://go-review.googlesource.com/28968
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-09-11 22:46:38 +00:00
David Crawshaw 3bf141955b cmd/dist: test PIE internal linking on linux/amd64
Change-Id: I88dd0811db3a9864106def47b89848f5c8de94d4
Reviewed-on: https://go-review.googlesource.com/28545
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-09-11 22:18:22 +00:00
David Crawshaw 675ba53c76 cmd/go: internal PIE does not need runtime/cgo
Part of adding PIE internal linking on linux/amd64.

Change-Id: I57f0596cb254cbe6569e4d4e39fe4f48437733f2
Reviewed-on: https://go-review.googlesource.com/28544
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-09-11 22:01:14 +00:00
David Crawshaw 1a42d8fbd6 cmd/link: allow internal PIE linking
Part of adding PIE internal linking on linux/amd64.

Change-Id: I5ce01d1974e5d4b1a8cbcc8b08157477631d8d24
Reviewed-on: https://go-review.googlesource.com/28543
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-09-11 21:53:21 +00:00
David Crawshaw 04b4dbe1f0 cmd/link: mark PIE binaries as ET_DYN
Part of adding PIE internal linking on linux/amd64.

Change-Id: I586e7c2afba349281168df5e20d2fdcb697f6e37
Reviewed-on: https://go-review.googlesource.com/28542
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-09-11 21:30:09 +00:00
David Crawshaw d9d1399eea cmd/link: mark rel.ro segment as PT_GNU_RELRO
Details: http://www.airs.com/blog/archives/189

Part of adding PIE internal linking on linux/amd64.

Change-Id: I8843a97f22f6f120346cccd694c7fff32f09f60b
Reviewed-on: https://go-review.googlesource.com/28541
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-09-11 21:29:51 +00:00
David Crawshaw 44ee2b00db cmd/link: optimize TLS IE to LE in build mode PIE
When cmd/compile generates position-independent code on linux
(the -shared flag), it refers to runtime.tlsg as a TLS IE variable.

When cmd/link is linking a PIE executable internally, all TLS IE
relocations are generated by cmd/compile, and the variable they
refer to, runtime.tlsg, is local to the binary. This means we can
optimize this particular IE case to LE, and thus implement IE
support when internally linking.

To do this optimization in the linker, we need to rewrite the
PC-relative MOVD to a constant load. This may seem like an
unconscionable act born of enthusiasm, but it turns out this is
standard operating procedure for linkers. GNU gold does exactly
the same optimization. I spent some time reading it and documented
at least one missing feature from this version.

Part of adding PIE internal linking on linux/amd64.

Change-Id: I1eb068d0ec774724944c6b308aa5084582ecde0b
Reviewed-on: https://go-review.googlesource.com/28540
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-09-11 21:13:42 +00:00
Josh Bleecher Snyder 1fe4c81282 cmd/compile: don't crash on complex(0())
Fixes #17038.

Change-Id: Iaf6294361050040830af1d60cd48f263223d9356
Reviewed-on: https://go-review.googlesource.com/28966
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-09-11 20:43:51 +00:00
David Crawshaw 81ee93679d cmd/link: generate dynamic relocs for internal PIE
This reuses the machinery built for dynamic loading of shared
libraries. The significant difference with PIE is we generate
dynamic relocations for known internal symbols, not just
dynamic external symbols.

Part of adding PIE internal linking on linux/amd64.

Change-Id: I4afa24070bfb61f94f8d3648f2433d5343bac3fe
Reviewed-on: https://go-review.googlesource.com/28539
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-09-11 20:30:47 +00:00
David Crawshaw 276803d611 cmd/link: introduce a rel.ro segment
When internally linking with using rel.ro sections, this segment covers
the sections. To do this, move to other read-only sections, SELFROSECT
and SMACHOPLT, out of the way.

Part of adding PIE internal linking on linux/amd64.

Change-Id: I4fb3d180e92f7e801789ab89864010faf5a2cb6d
Reviewed-on: https://go-review.googlesource.com/28538
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-09-11 20:10:47 +00:00
Josh Bleecher Snyder f15915af4e cmd/vet: ignore printf failures in cmd
This is a temporary measure to work around #17057.
It will be reverted when #17057 is fixed.

Change-Id: I21c02f63f3530774c91065cfed5d9c566839ed9f
Reviewed-on: https://go-review.googlesource.com/28959
Reviewed-by: Rob Pike <r@golang.org>
2016-09-10 22:42:26 +00:00
Josh Bleecher Snyder 8e84a5dd47 cmd/vet/all/whitelist: add readme.txt
This was written for CL 27811,
but it got lost in the sea of new files.

Change-Id: I5c52cb23dda499b21a6bb32ed5c586779ccbc2f1
Reviewed-on: https://go-review.googlesource.com/28960
Reviewed-by: Rob Pike <r@golang.org>
2016-09-10 22:41:38 +00:00
Josh Bleecher Snyder 5de2e5b73e cmd/vet: add vet runner script for core
This CL adds a script to run vet on std and cmd.

There are a considerable number of false positives,
mostly from legitimate but unusual assembly in
the runtime and reflect packages.

There are also a few false positives that need fixes.
They are noted as such in the whitelists;
they're not worth holding this CL for.

The unsafe pointer check is disabled.
The false positive rate is just too high to be worth it.

There is no cmd/dist/test integration yet.
The tentative plan is that we'll check the local platform
during all.bash, and that there'll be a fast builder that
checks all platforms (to cover platforms that can't exec).

Fixes #11041

Change-Id: Iee4ed32b05447888368ed86088e3ed3771f84442
Reviewed-on: https://go-review.googlesource.com/27811
Reviewed-by: Rob Pike <r@golang.org>
2016-09-10 21:56:34 +00:00
Josh Bleecher Snyder 0e435347b1 cmd: fix format strings used with obj.Headtype
Found by vet. Introduced by CL 28853.

Change-Id: I3199e0cbdb1c512ba29eb7e4d5c1c98963f5a954
Reviewed-on: https://go-review.googlesource.com/28957
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-09-10 21:40:10 +00:00
Jaana Burcu Dogan 7b269195d3 cmd/go: organize test profiling flags into their own sub-section
Fixes #17020.

Change-Id: Ice21bd8eb4dbc208f244b275c3be604bc8e3efe7
Reviewed-on: https://go-review.googlesource.com/28783
Reviewed-by: Rob Pike <r@golang.org>
Run-TryBot: Jaana Burcu Dogan <jbd@google.com>
2016-09-10 00:35:48 +00:00
Edward Muller 81dfcba331 go/build: add help info for unset $GOPATH
We relay this info in a few places, in a few different ways, but not
consistently everywhere.  This led one of our users to start googling
and not find https://golang.org/doc/code.html#Workspaces, of which `go
help gopath` is the most equivalent.

Change-Id: I28a94375739f3aa4f200e145293ca2a5f65101e1
Reviewed-on: https://go-review.googlesource.com/28690
Run-TryBot: Rob Pike <r@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
2016-09-10 00:27:43 +00:00
Robert Griesemer d817c4ec6d cmd/compile: use regular rather than indexed format string
This enables the format test to process this file (the format
test doesn't handle indexed formats, and this is the only place
in the compiler where they occur).

Change-Id: I99743f20c463f181a589b210365f70162227d4e0
Reviewed-on: https://go-review.googlesource.com/28932
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
2016-09-09 20:07:43 +00:00
Matthew Dempsky cfc0d6d884 cmd/compile/internal/syntax: remove strbyteseql
cmd/compile already optimizes "string(b) == s" to avoid allocating a
temporary string.

Change-Id: I4244fbeae8d350261494135c357f9a6e2ab7ace3
Reviewed-on: https://go-review.googlesource.com/28931
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-09-09 19:25:56 +00:00
David Crawshaw 3877f820a6 cmd/link, etc: introduce SymKind type
Moves the grouping of symbol kinds (sections) into cmd/internal/obj
to keep it near the definition. Groundwork for CL 28538.

Change-Id: I99112981e69b028f366e1333f31cd7defd4ff82c
Reviewed-on: https://go-review.googlesource.com/28691
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-09-09 16:56:03 +00:00
David Crawshaw 791f71d192 cmd: use obj.GOOS, obj.GOARCH, etc
As cmd/internal/obj is coordinating the definition of GOOS, GOARCH,
etc across the compiler and linker, turn its functions into globals
and use them everywhere.

Change-Id: I5db5addda3c6b6435c37fd5581c7c3d9a561f492
Reviewed-on: https://go-review.googlesource.com/28854
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-09 16:38:45 +00:00
David Crawshaw 428c349552 cmd/link, cmd/internal/obj: give Headtype a type
Separate out windows/windowsgui properly so we are not encoding some
of the Headtype value in a separate headstring global.

Remove one of the two copies of the variable from cmd/link.

Remove duplicate string to headtype list.

Change-Id: Ifa20fb9652a1dc95161e154aac11f15ad0f709d0
Reviewed-on: https://go-review.googlesource.com/28853
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-09-09 12:25:00 +00:00
David Crawshaw 361d2738d5 cmd/link: remove the -shared flag
The -shared flag has been superseded by the -buildmode flag.

Change-Id: I3682cc0367b919084c280d7dc64746485c1d4ddd
Reviewed-on: https://go-review.googlesource.com/28852
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
2016-09-09 10:20:01 +00:00
Robert Griesemer 06eeea210b cmd/compile: permit use of %S (short) and %L (long) instead of %1v and %2v
First step towards cleaning up format use. Not yet enabled.

Change-Id: Ia8d76bf02fe05882fffb9d17c9a30dc38d28bf81
Reviewed-on: https://go-review.googlesource.com/28784
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-09 00:44:03 +00:00
Robert Griesemer 29f18d7983 cmd/compile: fix bug in oconv
Introduced by https://go-review.googlesource.com/#/c/28331/ .

Change-Id: Id75aed6410f06b302d5347f6ca6a2e19c61f6fb6
Reviewed-on: https://go-review.googlesource.com/28779
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-08 22:01:55 +00:00
Robert Griesemer 9d6677ca7b cmd/compile: update and reenable Formats test
Change-Id: I9c0da13d21551dbf766156472224370ab9badfe9
Reviewed-on: https://go-review.googlesource.com/28778
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-08 22:01:37 +00:00
Robert Griesemer 58de26810c cmd/compile: remove superfluous returns in fmt.go
Change-Id: Ie73fb460a3838c6d1b9348965a8b69c1bfa6a882
Reviewed-on: https://go-review.googlesource.com/28341
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Dave Cheney <dave@cheney.net>
2016-09-08 21:36:37 +00:00
Robert Griesemer 0ca5f269d4 cmd/compile: remove fmt.go printer again, now that it's unused
Change-Id: I9a6e5b9cbcfc264c61fd39ed65330ca737707e1f
Reviewed-on: https://go-review.googlesource.com/28340
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-08 21:36:22 +00:00
Robert Griesemer 266c6223df cmd/compile: implement fmt.Formatter for Nodes formats %s, %v
Change-Id: Iac3a72cb6c5394f3c1a49f39125b0256d570e006
Reviewed-on: https://go-review.googlesource.com/28339
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-08 21:36:08 +00:00
Robert Griesemer daf6179733 cmd/compile: use fmt.State in nodedump
Change-Id: Icd83e88fc879b30b34f8697d540619efeb25c25b
Reviewed-on: https://go-review.googlesource.com/28338
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-08 21:35:54 +00:00
Robert Griesemer 0510f0dfe7 cmd/compile: use fmt.State in exprfmt
Change-Id: If6c2d469c66a7aa8471bf54310354efdac3e0235
Reviewed-on: https://go-review.googlesource.com/28337
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-08 21:35:40 +00:00
Robert Griesemer ebdc8faf04 cmd/compile: use fmt.State in nodefmt and stmtfmt
Change-Id: Iac87007af4ee268b45f11ec05bf4757f2e7eedd8
Reviewed-on: https://go-review.googlesource.com/28336
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-08 21:35:25 +00:00
Robert Griesemer ff046d2e28 cmd/compile: implement fmt.Formatter for *Node formats %s, %v
Change-Id: I80ed668cdeab0c4342b734d34b429927e0213e5a
Reviewed-on: https://go-review.googlesource.com/28335
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-08 21:35:10 +00:00
Robert Griesemer a0d2010208 cmd/compile: implement fmt.Formatter for *Sym formats %s, %v
Change-Id: I0c362edba66c763e84990e3c5508013021f3e6fe
Reviewed-on: https://go-review.googlesource.com/28334
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-08 21:34:55 +00:00
Robert Griesemer 8d0bbe2b48 cmd/compile: implement fmt.Formatter for *Type formats %s, %v
Change-Id: I878ac549430abc7859c30d176d52d52ce02c5827
Reviewed-on: https://go-review.googlesource.com/28333
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-09-08 21:34:41 +00:00