go/test
Zheng Xu 8f4fd3f34e build: support frame-pointer for arm64
Supporting frame-pointer makes Linux's perf and other profilers much more useful
because it lets them gather a stack trace efficiently on profiling events. Major
changes include:
1. save FP on the word below where RSP is pointing to (proposed by Cherry and Austin)
2. adjust some specific offsets in runtime assembly and wrapper code
3. add support to FP in goroutine scheduler
4. adjust link stack overflow check to take the extra word into account
5. adjust nosplit test cases to enable frame sizes which are 16 bytes aligned

Performance impacts on go1 benchmarks:

Enable frame-pointer (by default)

name                      old time/op    new time/op    delta
BinaryTree17-46              5.94s ± 0%     6.00s ± 0%  +1.03%  (p=0.029 n=4+4)
Fannkuch11-46                2.84s ± 1%     2.77s ± 0%  -2.58%  (p=0.008 n=5+5)
FmtFprintfEmpty-46          55.0ns ± 1%    58.9ns ± 1%  +7.06%  (p=0.008 n=5+5)
FmtFprintfString-46          102ns ± 0%     105ns ± 0%  +2.94%  (p=0.008 n=5+5)
FmtFprintfInt-46             118ns ± 0%     117ns ± 1%  -1.19%  (p=0.000 n=4+5)
FmtFprintfIntInt-46          181ns ± 0%     182ns ± 1%    ~     (p=0.444 n=5+5)
FmtFprintfPrefixedInt-46     215ns ± 1%     214ns ± 0%    ~     (p=0.254 n=5+4)
FmtFprintfFloat-46           292ns ± 0%     296ns ± 0%  +1.46%  (p=0.029 n=4+4)
FmtManyArgs-46               720ns ± 0%     732ns ± 0%  +1.72%  (p=0.008 n=5+5)
GobDecode-46                9.82ms ± 1%   10.03ms ± 2%  +2.10%  (p=0.008 n=5+5)
GobEncode-46                8.14ms ± 0%    8.72ms ± 1%  +7.14%  (p=0.008 n=5+5)
Gzip-46                      420ms ± 0%     424ms ± 0%  +0.92%  (p=0.008 n=5+5)
Gunzip-46                   48.2ms ± 0%    48.4ms ± 0%  +0.41%  (p=0.008 n=5+5)
HTTPClientServer-46          201µs ± 4%     201µs ± 0%    ~     (p=0.730 n=5+4)
JSONEncode-46               17.1ms ± 0%    17.7ms ± 1%  +3.80%  (p=0.008 n=5+5)
JSONDecode-46               88.0ms ± 0%    90.1ms ± 0%  +2.42%  (p=0.008 n=5+5)
Mandelbrot200-46            5.06ms ± 0%    5.07ms ± 0%    ~     (p=0.310 n=5+5)
GoParse-46                  5.04ms ± 0%    5.12ms ± 0%  +1.53%  (p=0.008 n=5+5)
RegexpMatchEasy0_32-46       117ns ± 0%     117ns ± 0%    ~     (all equal)
RegexpMatchEasy0_1K-46       332ns ± 0%     329ns ± 0%  -0.78%  (p=0.008 n=5+5)
RegexpMatchEasy1_32-46       104ns ± 0%     113ns ± 0%  +8.65%  (p=0.029 n=4+4)
RegexpMatchEasy1_1K-46       563ns ± 0%     569ns ± 0%  +1.10%  (p=0.008 n=5+5)
RegexpMatchMedium_32-46      167ns ± 2%     177ns ± 1%  +5.74%  (p=0.008 n=5+5)
RegexpMatchMedium_1K-46     49.5µs ± 0%    53.4µs ± 0%  +7.81%  (p=0.008 n=5+5)
RegexpMatchHard_32-46       2.56µs ± 1%    2.72µs ± 0%  +6.01%  (p=0.008 n=5+5)
RegexpMatchHard_1K-46       77.0µs ± 0%    81.8µs ± 0%  +6.24%  (p=0.016 n=5+4)
Revcomp-46                   631ms ± 1%     627ms ± 1%    ~     (p=0.095 n=5+5)
Template-46                 81.8ms ± 0%    86.3ms ± 0%  +5.55%  (p=0.008 n=5+5)
TimeParse-46                 423ns ± 0%     432ns ± 0%  +2.32%  (p=0.008 n=5+5)
TimeFormat-46                478ns ± 2%     497ns ± 1%  +3.89%  (p=0.008 n=5+5)
[Geo mean]                  71.6µs         73.3µs       +2.45%

name                      old speed      new speed      delta
GobDecode-46              78.1MB/s ± 1%  76.6MB/s ± 2%  -2.04%  (p=0.008 n=5+5)
GobEncode-46              94.3MB/s ± 0%  88.0MB/s ± 1%  -6.67%  (p=0.008 n=5+5)
Gzip-46                   46.2MB/s ± 0%  45.8MB/s ± 0%  -0.91%  (p=0.008 n=5+5)
Gunzip-46                  403MB/s ± 0%   401MB/s ± 0%  -0.41%  (p=0.008 n=5+5)
JSONEncode-46              114MB/s ± 0%   109MB/s ± 1%  -3.66%  (p=0.008 n=5+5)
JSONDecode-46             22.0MB/s ± 0%  21.5MB/s ± 0%  -2.35%  (p=0.008 n=5+5)
GoParse-46                11.5MB/s ± 0%  11.3MB/s ± 0%  -1.51%  (p=0.008 n=5+5)
RegexpMatchEasy0_32-46     272MB/s ± 0%   272MB/s ± 1%    ~     (p=0.190 n=4+5)
RegexpMatchEasy0_1K-46    3.08GB/s ± 0%  3.11GB/s ± 0%  +0.77%  (p=0.008 n=5+5)
RegexpMatchEasy1_32-46     306MB/s ± 0%   283MB/s ± 0%  -7.63%  (p=0.029 n=4+4)
RegexpMatchEasy1_1K-46    1.82GB/s ± 0%  1.80GB/s ± 0%  -1.07%  (p=0.008 n=5+5)
RegexpMatchMedium_32-46   5.99MB/s ± 0%  5.64MB/s ± 1%  -5.77%  (p=0.016 n=4+5)
RegexpMatchMedium_1K-46   20.7MB/s ± 0%  19.2MB/s ± 0%  -7.25%  (p=0.008 n=5+5)
RegexpMatchHard_32-46     12.5MB/s ± 1%  11.8MB/s ± 0%  -5.66%  (p=0.008 n=5+5)
RegexpMatchHard_1K-46     13.3MB/s ± 0%  12.5MB/s ± 1%  -6.01%  (p=0.008 n=5+5)
Revcomp-46                 402MB/s ± 1%   405MB/s ± 1%    ~     (p=0.095 n=5+5)
Template-46               23.7MB/s ± 0%  22.5MB/s ± 0%  -5.25%  (p=0.008 n=5+5)
[Geo mean]                82.2MB/s       79.6MB/s       -3.26%

Disable frame-pointer (GOEXPERIMENT=noframepointer)

name                      old time/op    new time/op    delta
BinaryTree17-46              5.94s ± 0%     5.96s ± 0%  +0.39%  (p=0.029 n=4+4)
Fannkuch11-46                2.84s ± 1%     2.79s ± 1%  -1.68%  (p=0.008 n=5+5)
FmtFprintfEmpty-46          55.0ns ± 1%    55.2ns ± 3%    ~     (p=0.794 n=5+5)
FmtFprintfString-46          102ns ± 0%     103ns ± 0%  +0.98%  (p=0.016 n=5+4)
FmtFprintfInt-46             118ns ± 0%     115ns ± 0%  -2.54%  (p=0.029 n=4+4)
FmtFprintfIntInt-46          181ns ± 0%     179ns ± 0%  -1.10%  (p=0.000 n=5+4)
FmtFprintfPrefixedInt-46     215ns ± 1%     213ns ± 0%    ~     (p=0.143 n=5+4)
FmtFprintfFloat-46           292ns ± 0%     300ns ± 0%  +2.83%  (p=0.029 n=4+4)
FmtManyArgs-46               720ns ± 0%     739ns ± 0%  +2.64%  (p=0.008 n=5+5)
GobDecode-46                9.82ms ± 1%    9.78ms ± 1%    ~     (p=0.151 n=5+5)
GobEncode-46                8.14ms ± 0%    8.12ms ± 1%    ~     (p=0.690 n=5+5)
Gzip-46                      420ms ± 0%     420ms ± 0%    ~     (p=0.548 n=5+5)
Gunzip-46                   48.2ms ± 0%    48.0ms ± 0%  -0.33%  (p=0.032 n=5+5)
HTTPClientServer-46          201µs ± 4%     199µs ± 3%    ~     (p=0.548 n=5+5)
JSONEncode-46               17.1ms ± 0%    17.2ms ± 0%    ~     (p=0.056 n=5+5)
JSONDecode-46               88.0ms ± 0%    88.6ms ± 0%  +0.64%  (p=0.008 n=5+5)
Mandelbrot200-46            5.06ms ± 0%    5.07ms ± 0%    ~     (p=0.548 n=5+5)
GoParse-46                  5.04ms ± 0%    5.07ms ± 0%  +0.65%  (p=0.008 n=5+5)
RegexpMatchEasy0_32-46       117ns ± 0%     112ns ± 4%  -4.27%  (p=0.016 n=4+5)
RegexpMatchEasy0_1K-46       332ns ± 0%     330ns ± 1%    ~     (p=0.095 n=5+5)
RegexpMatchEasy1_32-46       104ns ± 0%     110ns ± 1%  +5.29%  (p=0.029 n=4+4)
RegexpMatchEasy1_1K-46       563ns ± 0%     567ns ± 2%    ~     (p=0.151 n=5+5)
RegexpMatchMedium_32-46      167ns ± 2%     166ns ± 0%    ~     (p=0.333 n=5+4)
RegexpMatchMedium_1K-46     49.5µs ± 0%    49.6µs ± 0%    ~     (p=0.841 n=5+5)
RegexpMatchHard_32-46       2.56µs ± 1%    2.49µs ± 0%  -2.81%  (p=0.008 n=5+5)
RegexpMatchHard_1K-46       77.0µs ± 0%    75.8µs ± 0%  -1.55%  (p=0.008 n=5+5)
Revcomp-46                   631ms ± 1%     628ms ± 0%    ~     (p=0.095 n=5+5)
Template-46                 81.8ms ± 0%    84.3ms ± 1%  +3.05%  (p=0.008 n=5+5)
TimeParse-46                 423ns ± 0%     425ns ± 0%  +0.52%  (p=0.008 n=5+5)
TimeFormat-46                478ns ± 2%     478ns ± 1%    ~     (p=1.000 n=5+5)
[Geo mean]                  71.6µs         71.6µs       -0.01%

name                      old speed      new speed      delta
GobDecode-46              78.1MB/s ± 1%  78.5MB/s ± 1%    ~     (p=0.151 n=5+5)
GobEncode-46              94.3MB/s ± 0%  94.5MB/s ± 1%    ~     (p=0.690 n=5+5)
Gzip-46                   46.2MB/s ± 0%  46.2MB/s ± 0%    ~     (p=0.571 n=5+5)
Gunzip-46                  403MB/s ± 0%   404MB/s ± 0%  +0.33%  (p=0.032 n=5+5)
JSONEncode-46              114MB/s ± 0%   113MB/s ± 0%    ~     (p=0.056 n=5+5)
JSONDecode-46             22.0MB/s ± 0%  21.9MB/s ± 0%  -0.64%  (p=0.008 n=5+5)
GoParse-46                11.5MB/s ± 0%  11.4MB/s ± 0%  -0.64%  (p=0.008 n=5+5)
RegexpMatchEasy0_32-46     272MB/s ± 0%   285MB/s ± 4%  +4.74%  (p=0.016 n=4+5)
RegexpMatchEasy0_1K-46    3.08GB/s ± 0%  3.10GB/s ± 1%    ~     (p=0.151 n=5+5)
RegexpMatchEasy1_32-46     306MB/s ± 0%   290MB/s ± 1%  -5.21%  (p=0.029 n=4+4)
RegexpMatchEasy1_1K-46    1.82GB/s ± 0%  1.81GB/s ± 2%    ~     (p=0.151 n=5+5)
RegexpMatchMedium_32-46   5.99MB/s ± 0%  6.02MB/s ± 1%    ~     (p=0.063 n=4+5)
RegexpMatchMedium_1K-46   20.7MB/s ± 0%  20.7MB/s ± 0%    ~     (p=0.659 n=5+5)
RegexpMatchHard_32-46     12.5MB/s ± 1%  12.8MB/s ± 0%  +2.88%  (p=0.008 n=5+5)
RegexpMatchHard_1K-46     13.3MB/s ± 0%  13.5MB/s ± 0%  +1.58%  (p=0.008 n=5+5)
Revcomp-46                 402MB/s ± 1%   405MB/s ± 0%    ~     (p=0.095 n=5+5)
Template-46               23.7MB/s ± 0%  23.0MB/s ± 1%  -2.95%  (p=0.008 n=5+5)
[Geo mean]                82.2MB/s       82.3MB/s       +0.04%

Frame-pointer is enabled on Linux by default but can be disabled by setting: GOEXPERIMENT=noframepointer.

Fixes #10110

Change-Id: I1bfaca6dba29a63009d7c6ab04ed7a1413d9479e
Reviewed-on: https://go-review.googlesource.com/61511
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2018-08-29 18:28:34 +00:00
..
alias3.dir [dev.typealias] cmd/compile: export/import test cases for type aliases 2017-01-20 05:55:53 +00:00
bench test/bench/go1: fix typo in parserdata_test.go comment 2017-03-22 03:23:16 +00:00
chan all: fix article typos 2017-09-15 02:39:16 +00:00
closure3.dir cmd/compile: fix panic-okay-to-inline change; adjust tests 2018-06-06 20:35:23 +00:00
codegen build: support frame-pointer for arm64 2018-08-29 18:28:34 +00:00
ddd2.dir
dwarf
fixedbugs cmd/compile: prevent overflow in walkinrange 2018-08-26 21:52:27 +00:00
import2.dir
import4.dir
interface cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
intrinsic.dir cmd/compile: intrinsics for math/bits.TrailingZerosX 2017-03-16 02:44:16 +00:00
ken test: remove rundircmpout and cmpout actions 2018-05-31 17:36:45 +00:00
linkname.dir cmd/compile: include linknames in export data 2017-02-08 20:59:45 +00:00
method4.dir
retjmp.dir cmd/asm: fix assembling return jump 2018-03-01 21:11:16 +00:00
stress
syntax cmd/compile: better handling of incorrect type switches 2018-04-03 05:34:20 +00:00
uintptrescapes.dir cmd/compile, syscall: add //go:uintptrescapes comment, and use it 2016-07-06 20:48:41 +00:00
64bit.go
235.go
alg.go
alias.go
alias1.go
alias2.go cmd/compile: cleanup method symbol creation 2018-04-05 22:01:17 +00:00
alias3.go [dev.typealias] cmd/compile: export/import test cases for type aliases 2017-01-20 05:55:53 +00:00
align.go test: check that unaligned load-add opcodes work. 2018-04-09 18:57:37 +00:00
append.go cmd/compile: optimize append(x, make([]T, y)...) slice extension 2018-05-06 04:28:23 +00:00
append1.go cmd/compile: optimize append(x, make([]T, y)...) slice extension 2018-05-06 04:28:23 +00:00
args.go
armimm.go cmd/internal/obj: continue to optimize ARM's constant pool 2017-05-11 13:53:54 +00:00
assign.go
assign1.go
atomicload.go
bigalg.go
bigmap.go
blank.go
blank1.go
bom.go
bombad.go
bounds.go test: gofmt bounds.go 2018-05-29 02:39:16 +00:00
chancap.go runtime: use sparse mappings for the heap 2018-02-15 21:12:23 +00:00
chanlinear.go
char_lit.go
char_lit1.go
checkbce.go test: add missing copyright header to checkbce.go 2017-05-18 00:05:25 +00:00
clearfat.go
closedchan.go
closure.go
closure1.go
closure2.go
closure3.go cmd/compile: fix reassignment check 2017-11-03 20:09:26 +00:00
closure4.go cmd/compile/internal/gc: add nil check for closure call on wasm 2018-08-14 09:19:38 +00:00
cmp.go
cmp6.go
cmplx.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
cmplxdivide.c runtime: make complex division c99 compatible 2017-03-15 22:45:17 +00:00
cmplxdivide.go runtime: make complex division c99 compatible 2017-03-15 22:45:17 +00:00
cmplxdivide1.go runtime: make complex division c99 compatible 2017-03-15 22:45:17 +00:00
complit.go
complit1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
compos.go
const.go cmd/compile: fix compiler bug for constant equality comparison 2016-09-17 01:12:24 +00:00
const1.go cmd/compile: fix constant pointer comparison failure 2018-04-09 23:19:45 +00:00
const2.go
const3.go
const4.go
const5.go
const6.go
convert.go
convert1.go
convert2.go cmd/compile: ignore struct tags when converting structs 2016-10-04 17:10:47 +00:00
convert3.go
convlit.go
convlit1.go
convT2X.go
copy.go
copy1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
crlf.go
ddd.go
ddd1.go test: reenable ... test 2017-08-11 17:41:17 +00:00
ddd2.go
decl.go
declbad.go
defer.go
deferfin.go
deferprint.go test: remove rundircmpout and cmpout actions 2018-05-31 17:36:45 +00:00
deferprint.out
devirt.go cmd/compile: de-virtualize interface calls 2017-03-14 18:49:23 +00:00
divide.go
divmod.go
empty.go
env.go
eof.go
eof1.go
escape.go
escape2.go test: add missing escape analysis test 2017-08-11 00:56:21 +00:00
escape2n.go test: add missing escape analysis test 2017-08-11 00:56:21 +00:00
escape3.go
escape4.go cmd/compile: fix panic-okay-to-inline change; adjust tests 2018-06-06 20:35:23 +00:00
escape5.go cmd/compile: in escape analysis, use element type for OIND of slice 2018-04-18 02:59:37 +00:00
escape_array.go cmd/compile: print accurate escape reason for non-const-length slices 2018-03-28 16:56:03 +00:00
escape_because.go test: update list of escape reasons 2018-03-29 14:17:40 +00:00
escape_calls.go
escape_closure.go cmd/compile/internal/syntax: establish principled position information 2017-02-15 01:33:03 +00:00
escape_field.go
escape_iface.go cmd/compile: avoid leak of dottype expression on double assignment form 2016-10-10 12:09:16 +00:00
escape_indir.go
escape_level.go
escape_map.go
escape_param.go
escape_slice.go
escape_struct_param1.go
escape_struct_param2.go
escape_struct_return.go
fibo.go
finprofiled.go
float_lit.go
float_lit2.go test/float_lit2: fix expressions in comment 2016-09-14 16:39:47 +00:00
float_lit3.go
floatcmp.go
for.go
func.go
func1.go
func2.go
func3.go
func4.go
func5.go
func6.go
func7.go
func8.go
funcdup.go
funcdup2.go
gc.go
gc1.go
gc2.go all: skip unsupported tests for js/wasm 2018-04-30 19:39:18 +00:00
gcgort.go test: fast GC+concurrency+types verification 2018-05-08 21:15:48 +00:00
gcstring.go
goprint.go test: remove rundircmpout and cmpout actions 2018-05-31 17:36:45 +00:00
goprint.out
goto.go cmd/compile: report block start for gotos jumping into blocks 2017-04-19 02:27:58 +00:00
heapsampling.go
helloworld.go test: remove rundircmpout and cmpout actions 2018-05-31 17:36:45 +00:00
helloworld.out
if.go
import.go
import1.go
import2.go
import4.go
import5.go cmd/compile: be slightly more tolerant in case of certain syntax errors 2017-03-24 20:07:15 +00:00
import6.go cmd/compile/internal/syntax: removed gcCompat code needed to pass orig. tests 2017-02-10 01:22:30 +00:00
index.go
index0.go
index1.go
index2.go
indirect.go
indirect1.go
init.go Revert "cmd/compile: improve error message if init is directly invoked" 2017-03-06 23:48:37 +00:00
init1.go
initcomma.go
initialize.go
initializerr.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
initloop.go
inline.go cmd/compile: inline closures with captures 2017-11-05 04:18:05 +00:00
inline_big.go cmd/compile: set stricter inlining threshold in large functions 2018-07-24 16:11:08 +00:00
inline_caller.go runtime: skip logical frames in runtime.Caller 2017-04-18 19:56:30 +00:00
inline_callers.go test: make inline_callers.go test not inline the runtime 2017-11-22 00:52:54 +00:00
inline_literal.go cmd/compile: copy literals when inlining 2017-03-03 21:29:32 +00:00
inline_variadic.go cmd/compile: enable inlining variadic functions 2018-03-13 20:34:03 +00:00
int_lit.go
intcvt.go
intrinsic.go cmd/compile: intrinsify Ctz{32,64} and Bswap{32,64} on s390x 2016-09-19 19:03:01 +00:00
intrinsic_atomic.go cmd/compile: intrinsify atomics on MIPS64 2017-10-10 19:43:38 +00:00
iota.go
label.go
label1.go cmd/compile/internal/gc: don't panic on continue in switch 2017-04-12 14:27:45 +00:00
linkmain.go
linkmain_run.go all: skip unsupported tests for js/wasm 2018-04-30 19:39:18 +00:00
linkname.go cmd/compile: include linknames in export data 2017-02-08 20:59:45 +00:00
linkobj.go all: skip unsupported tests for js/wasm 2018-04-30 19:39:18 +00:00
linkx.go
linkx_run.go all: skip unsupported tests for js/wasm 2018-04-30 19:39:18 +00:00
literal.go
live.go all: fix typos detected by github.com/client9/misspell 2018-08-23 15:54:07 +00:00
live1.go
live2.go cmd/compile: specialize map creation for small hint sizes 2017-11-02 17:03:45 +00:00
live_syscall.go all: skip unsupported tests for js/wasm 2018-04-30 19:39:18 +00:00
locklinear.go test: skip locklinear's lockmany test for now 2018-04-05 10:53:40 +00:00
loopbce.go cmd/compile: ensure that loop condition is detected correctly 2018-07-09 18:23:39 +00:00
makechan.go cmd/compile: generate makechan calls with int arguments 2017-08-15 05:54:24 +00:00
makemap.go test: check that size argument errors are emitted at call site 2018-03-14 08:36:15 +00:00
makenew.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
mallocfin.go
map.go
map1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
mapclear.go cmd/compile: optimize map-clearing range idiom 2018-05-08 21:15:16 +00:00
maplinear.go
mergemul.go cmd/compile: combine x*n - y*n into (x-y)*n 2017-09-03 14:29:38 +00:00
method.go
method1.go
method2.go cmd/compile: add two error position tests for the typechecker 2017-10-12 20:50:20 +00:00
method3.go
method4.go
method5.go
method6.go cmd/compile: add two error position tests for the typechecker 2017-10-12 20:50:20 +00:00
method7.go cmd/compile: fix method expressions with anonymous receivers 2018-04-06 15:39:11 +00:00
named.go
named1.go
nil.go
nilcheck.go
nilptr.go
nilptr2.go
nilptr3.go all: skip unsupported tests for js/wasm 2018-04-30 19:39:18 +00:00
nilptr3_wasm.go all: skip unsupported tests for js/wasm 2018-04-30 19:39:18 +00:00
nilptr4.go
nosplit.go build: support frame-pointer for arm64 2018-08-29 18:28:34 +00:00
notinheap.go cmd/compile/internal/gc: inline typedcl0 and typedcl1 2017-02-01 22:52:32 +00:00
notinheap2.go cmd/compile: add go:notinheap type pragma 2016-10-15 17:58:14 +00:00
notinheap3.go cmd/compile: []T where T is go:notinheap does not need write barriers 2017-11-06 21:07:57 +00:00
nowritebarrier.go cmd/compile: improve coverage of nowritebarrierrec check 2017-10-29 19:36:44 +00:00
nul1.go cmd/compile/internal/gc: enable new parser by default 2016-10-25 22:28:40 +00:00
opt_branchlikely.go cmd/compile: insert scheduling checks on loop backedges 2017-01-09 21:01:29 +00:00
parentype.go
peano.go all: skip unsupported tests for js/wasm 2018-04-30 19:39:18 +00:00
phiopt.go test: re-enable phi optimization test 2016-09-13 20:06:13 +00:00
print.go test: remove rundircmpout and cmpout actions 2018-05-31 17:36:45 +00:00
print.out cmd/compile: fix print/println when input is uint 2017-09-26 04:08:38 +00:00
printbig.go test: remove rundircmpout and cmpout actions 2018-05-31 17:36:45 +00:00
printbig.out
prove.go cmd/compile: ensure that loop condition is detected correctly 2018-07-09 18:23:39 +00:00
range.go cmd/compile: improve single blank variable handling in walkrange 2017-09-12 05:50:54 +00:00
README.md test: use the version of Go used to run run.go 2018-03-03 19:52:00 +00:00
recover.go
recover1.go
recover2.go
recover3.go
recover4.go all: use Fatalf instead of Fatal if format is given 2018-01-10 01:35:45 +00:00
recover5.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
reflectmethod1.go
reflectmethod2.go
reflectmethod3.go
reflectmethod4.go
rename.go
rename1.go cmd/compile: avoid duplicate cast error 2017-08-22 13:44:35 +00:00
reorder.go cmd/compile: Ensure left-to-right assignment 2017-02-11 21:46:21 +00:00
reorder2.go
retjmp.go cmd/asm: fix assembling return jump 2018-03-01 21:11:16 +00:00
return.go
rotate.go
rotate0.go
rotate1.go
rotate2.go
rotate3.go
run.go all: fix typos detected by github.com/client9/misspell 2018-08-23 15:54:07 +00:00
rune.go
runtime.go cmd/compile/internal/gc: separate builtin and real runtime packages 2017-03-01 01:06:32 +00:00
shift1.go cmd/compile: permit indices of certain non-constant shifts 2017-12-01 20:39:50 +00:00
shift2.go
sieve.go
sigchld.go test: remove rundircmpout and cmpout actions 2018-05-31 17:36:45 +00:00
sigchld.out
simassign.go
sinit.go
sinit_run.go all: skip unsupported tests for js/wasm 2018-04-30 19:39:18 +00:00
sizeof.go
slice3.go
slice3err.go
slicecap.go
sliceopt.go cmd/compile: make prove pass use unsatisfiability 2018-03-08 22:25:25 +00:00
solitaire.go
stack.go
strcopy.go test: add test to verify that string copies don't get optimized away 2018-06-12 19:10:34 +00:00
strength.go
string_lit.go
stringrange.go
struct0.go
switch.go
switch2.go cmd/compile/internal/syntax: match old parser errors and line numbers 2016-08-19 01:10:21 +00:00
switch3.go
switch4.go
switch5.go fmt: fix incorrect format of whole-number floats when using %#v 2018-08-28 20:15:15 +00:00
switch6.go cmd/compile: improve error for wrong type in switch 2017-02-02 17:36:43 +00:00
switch7.go cmd/compile: make duplicate expr cases readable 2017-05-19 18:11:51 +00:00
tinyfin.go
torture.go
turing.go
typecheck.go
typecheckloop.go
typeswitch.go
typeswitch1.go
typeswitch2.go cmd/compile/internal/syntax: removed gcCompat code needed to pass orig. tests 2017-02-10 01:22:30 +00:00
typeswitch3.go cmd/compile: add test for non interface type switch 2017-03-25 22:52:54 +00:00
uintptrescapes.go cmd/compile, syscall: add //go:uintptrescapes comment, and use it 2016-07-06 20:48:41 +00:00
uintptrescapes2.go cmd/compile: fix go:uintptrescapes tag for unnamed parameters 2018-02-14 21:41:39 +00:00
undef.go
unsafereject1.go test: restore tests for the reject unsafe code option 2018-08-22 17:54:09 +00:00
unsafereject2.go test: restore tests for the reject unsafe code option 2018-08-22 17:54:09 +00:00
utf.go
varerr.go
varinit.go
writebarrier.go cmd/compile: don't use statictmps for SSA-able composite literals 2017-05-11 18:28:40 +00:00
zerodivide.go test: lock in test for _ assignment evaluation/zerodivide panic 2016-12-23 17:35:24 +00:00

The test directory contains tests of the Go tool chain and runtime. It includes black box tests, regression tests, and error output tests. They are run as part of all.bash.

To run just these tests, execute:

../bin/go run run.go

Standard library tests should be written as regular Go tests in the appropriate package.

The tool chain and runtime also have regular Go tests in their packages. The main reasons to add a new test to this directory are:

  • it is most naturally expressed using the test runner; or
  • it is also applicable to gccgo and other Go tool chains.