go/test
Michael Munday ac743dea8e cmd/compile: always tighten and de-duplicate tuple selectors
The scheduler assumes two special invariants that apply to tuple
selectors (Select0 and Select1 ops):

  1. There is only one tuple selector of each type per generator.
  2. Tuple selectors and generators reside in the same block.

Prior to this CL the assumption was that these invariants would
only be broken by the CSE pass. The CSE pass therefore contained
code to move and de-duplicate selectors to fix these invariants.

However it is also possible to write relatively basic optimization
rules that cause these invariants to be broken. For example:

  (A (Select0 (B))) -> (Select1 (B))

This rule could result in the newly added selector (Select1) being
in a different block to the tuple generator (see issue #38356). It
could also result in duplicate selectors if this rule matches
multiple times for the same tuple generator (see issue #39472).

The CSE pass will 'fix' these invariants. However it will only do
so when optimizations are enabled (since disabling optimizations
disables the CSE pass).

This CL moves the CSE tuple selector fixup code into its own pass
and makes it mandatory even when optimizations are disabled. This
allows tuple selectors to be treated like normal ops for most of
the compilation pipeline until after the new pass has run, at which
point we need to be careful to maintain the invariant again.

Fixes #39472.

Change-Id: Ia3f79e09d9c65ac95f897ce37e967ee1258a080b
Reviewed-on: https://go-review.googlesource.com/c/go/+/237118
Run-TryBot: Michael Munday <mike.munday@ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
2020-06-10 14:55:29 +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: add go.mod file 2019-03-06 18:53:12 +00:00
chan test/chan: fix trivial typos 2020-03-25 22:22:20 +00:00
closure3.dir cmd/compile: skip escape analysis diagnostics for OADDR 2019-04-02 16:34:03 +00:00
codegen cmd/compile: ARM comparisons with 0 incorrect on overflow 2020-06-09 15:50:33 +00:00
ddd2.dir
dwarf
fixedbugs cmd/compile: always tighten and de-duplicate tuple selectors 2020-06-10 14:55:29 +00:00
import2.dir
import4.dir test: adjust gccgo expected import errors 2015-10-07 14:37:44 +00:00
interface test: add tests for runtime.itab.init 2019-11-06 09:09:59 +00:00
intrinsic.dir
ken all: fix typos 2019-09-08 17:28:20 +00:00
linkname.dir cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
method4.dir
oldescape_linkname.dir cmd/compile: update escape analysis tests for newescape 2019-04-16 16:20:39 +00:00
retjmp.dir
runtime test: remove -newescape from regress tests 2019-08-28 19:27:20 +00:00
stress
syntax cmd/compile/internal/syntax: better error when an assignment is used in value context 2020-02-21 22:57:52 +00:00
uintptrescapes.dir
64bit.go cmd/gc: Error out on division by constant zero. 2013-01-30 20:21:08 +01:00
235.go
README.md test: use the version of Go used to run run.go 2018-03-03 19:52:00 +00:00
alg.go test: add test that required algs get generated 2016-04-24 21:36:52 +00:00
alias.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
alias1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
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 test: run some more tests by default 2012-11-08 09:04:27 -08:00
armimm.go
assign.go cmd/gc: prohibit short variable declarations containing duplicate symbols 2014-10-06 17:16:39 -04:00
assign1.go
atomicload.go cmd/compile: keep value use counts in SSA 2016-03-17 04:20:02 +00:00
bigalg.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
bigmap.go runtime: handle and test large map values 2012-05-24 22:41:07 -04:00
blank.go
blank1.go test, test/fixedbugs, crypto/x509, go/internal/gccgoimporter: fix typos 2020-03-29 17:12:56 +00:00
bom.go gc: initial BOM is legal. 2012-09-10 13:03:07 -07:00
bombad.go
bounds.go
chancap.go
chanlinear.go test, test/fixedbugs, crypto/x509, go/internal/gccgoimporter: fix typos 2020-03-29 17:12:56 +00:00
char_lit.go
char_lit1.go
checkbce.go cmd/compile: fix ordering for short-circuiting ops 2019-03-06 20:04:07 +00:00
clearfat.go
closedchan.go
closure.go test: enforce 1 proc in the test 2012-07-01 21:59:50 +04:00
closure1.go
closure2.go all: fix typos 2019-09-08 17:28:20 +00:00
closure3.go all: fix a bunch of misspellings 2018-10-06 15:40:03 +00:00
closure4.go
cmp.go Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
cmp6.go cmd/gc: do not consider length zero arrays as comparable. 2014-01-31 00:30:56 +01:00
cmplx.go cmd/compile: rewrite f(g()) for multi-value g() during typecheck 2019-03-14 21:00:20 +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: simplify OPTRLIT handling 2019-09-26 18:45:53 +00:00
compos.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
const.go cmd/compile: apply constant folding to ORUNESTR 2019-09-26 23:54:29 +00:00
const1.go cmd/compile: fix ICE from invalid operations on float/complex constants 2019-03-28 17:46:55 +00:00
const2.go
const3.go test: [a-c]: add introductory comments to tests 2012-02-19 13:19:43 +11:00
const4.go all: link to https instead of http 2015-07-11 14:36:33 +00:00
const5.go all: link to https instead of http 2015-07-11 14:36:33 +00:00
const6.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
convT2X.go
convert.go test: [a-c]: add introductory comments to tests 2012-02-19 13:19:43 +11:00
convert1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
convert2.go cmd/compile: ignore struct tags when converting structs 2016-10-04 17:10:47 +00:00
convert3.go test: [a-c]: add introductory comments to tests 2012-02-19 13:19:43 +11:00
convlit.go cmd/compile: rewrite untyped constant conversion logic 2019-09-06 23:15:48 +00:00
convlit1.go
copy.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
copy1.go cmd/compile: rewrite f(g()) for multi-value g() during typecheck 2019-03-14 21:00:20 +00:00
crlf.go
ddd.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
ddd1.go cmd/compile: rewrite untyped constant conversion logic 2019-09-06 23:15:48 +00:00
ddd2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
decl.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
declbad.go test: correct type in declbad.go 2012-10-07 21:52:57 +02:00
defer.go
defererrcheck.go test: re-enable open-coded defer test on riscv64 2020-02-26 16:54:17 +00:00
deferfin.go
defernil.go cmd/compile: on Wasm and AIX, let deferred nil function panic at invocation 2019-10-16 00:05:37 +00:00
deferprint.go
deferprint.out
devirt.go cmd/compile: debug rewrite 2020-04-13 21:56:15 +00:00
directive.go cmd/compile: detect and diagnose invalid //go: directive placement 2020-04-21 16:47:01 +00:00
divide.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
divmod.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
empty.go test: explanatory comments [c-g]* 2012-02-19 14:28:53 +11:00
env.go os: remove Getenverror 2012-02-18 21:18:13 -08:00
eof.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
eof1.go
escape.go
escape2.go cmd/compile: more precise analysis of method values 2020-04-21 20:49:34 +00:00
escape2n.go cmd/compile: more precise analysis of method values 2020-04-21 20:49:34 +00:00
escape3.go
escape4.go cmd/compile: skip escape analysis diagnostics for OADDR 2019-04-02 16:34:03 +00:00
escape5.go cmd/compile: silence esc diagnostics about directiface OCONVIFACEs 2019-09-03 17:52:06 +00:00
escape_array.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
escape_calls.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
escape_closure.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
escape_field.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
escape_goto.go cmd/compile: preserve loop depth when evaluating block 2019-09-06 01:35:46 +00:00
escape_hash_maphash.go hash/maphash: mark call into runtime hash function as not escaping 2019-11-16 20:31:45 +00:00
escape_iface.go cmd/compile: use underlying OCOMPLIT's position for OPTRLIT 2019-09-25 17:07:09 +00:00
escape_indir.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
escape_level.go cmd/compile: silence esc diagnostics about directiface OCONVIFACEs 2019-09-03 17:52:06 +00:00
escape_map.go cmd/compile: silence esc diagnostics about directiface OCONVIFACEs 2019-09-03 17:52:06 +00:00
escape_param.go cmd/compile: reimplement parameter leak encoding 2019-10-07 18:50:14 +00:00
escape_runtime_atomic.go test: fix escape_runtime_atomic.go 2019-04-17 22:55:26 +00:00
escape_selfassign.go test: add regress test cases for self-assignment 2019-04-17 16:36:56 +00:00
escape_slice.go cmd/compile: make isSmallMakeSlice checks slice cap only 2020-03-31 21:51:51 +00:00
escape_struct_param1.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
escape_struct_param2.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
escape_struct_return.go test: remove -newescape from regress tests 2019-08-28 19:27:20 +00:00
escape_sync_atomic.go runtime/internal/atomic: remove bad go:noescape annotations on Loadp 2019-04-17 19:09:15 +00:00
escape_unsafe.go cmd/compile: silence esc diagnostics about directiface OCONVIFACEs 2019-09-03 17:52:06 +00:00
fibo.go
finprofiled.go all: fix typos 2019-09-08 17:28:20 +00:00
float_lit.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
float_lit2.go test/float_lit2: fix expressions in comment 2016-09-14 16:39:47 +00:00
float_lit3.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
floatcmp.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
for.go test: explanatory comments [c-g]* 2012-02-19 14:28:53 +11:00
func.go test: explanatory comments [c-g]* 2012-02-19 14:28:53 +11:00
func1.go cmd/gc: ensure unique parameter and result names in function types 2013-03-15 15:24:13 -04:00
func2.go test: explanatory comments [c-g]* 2012-02-19 14:28:53 +11:00
func3.go test: explanatory comments [c-g]* 2012-02-19 14:28:53 +11:00
func4.go test: explanatory comments [c-g]* 2012-02-19 14:28:53 +11:00
func5.go test: explanatory comments [c-g]* 2012-02-19 14:28:53 +11:00
func6.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
func7.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
func8.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
funcdup.go
funcdup2.go
gc.go
gc1.go
gc2.go
gcgort.go
gcstring.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
goprint.go test: adjust a test to work with js/wasm's background goroutine 2019-10-10 19:38:06 +00:00
goprint.out test: split golden.out into expected output per test 2012-01-18 16:12:24 -08:00
goto.go
heapsampling.go test: improve test coverage for heap sampling 2019-03-07 21:05:15 +00:00
helloworld.go test: remove rundircmpout and cmpout actions 2018-05-31 17:36:45 +00:00
helloworld.out test: split golden.out into expected output per test 2012-01-18 16:12:24 -08:00
if.go
import.go test: commentary for [h-m]*.go 2012-02-23 18:47:26 +11:00
import1.go
import2.go
import4.go test: convert more tests to rundir/compiledir conventions 2012-10-07 23:22:01 +02:00
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 all: fix typos 2019-09-08 17:28:20 +00:00
index0.go
index1.go
index2.go
indirect.go
indirect1.go
init.go cmd/compile: reorganize init functions 2019-03-18 20:10:55 +00:00
init1.go
initcomma.go test/initcomma.go: restore what it's supposed to be testing 2012-02-20 07:44:24 +11:00
initempty.go cmd/compile: add test for skipping empty init functions 2019-11-04 20:19:15 +00:00
initialize.go test: commentary for [h-m]*.go 2012-02-23 18:47:26 +11:00
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: allow mid-stack inlining when there is a cycle of recursion 2020-04-03 21:43:52 +00:00
inline_big.go cmd/compile: output cost while inlining function with Debug['m'] > 1 2020-02-26 14:44:24 +00:00
inline_caller.go runtime: make FuncForPC return the innermost inlined frame 2019-01-08 21:54:04 +00:00
inline_callers.go runtime: make FuncForPC return the innermost inlined frame 2019-01-08 21:54:04 +00:00
inline_literal.go
inline_math_bits_rotate.go cmd/compile: make math/bits.RotateLeft* an intrinsic on amd64 2018-08-30 22:48:28 +00:00
inline_sync.go test: re-enable atomic intrinsic related tests on riscv64 2020-03-25 01:11:15 +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
intrinsic_atomic.go test: re-enable atomic intrinsic related tests on riscv64 2020-03-25 01:11:15 +00:00
iota.go
label.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
label1.go
linkmain.go
linkmain_run.go test: avoid writing temporary files to GOROOT 2019-11-18 14:40:07 +00:00
linkname.go test: remove -newescape from regress tests 2019-08-28 19:27:20 +00:00
linkobj.go all: skip unsupported tests for js/wasm 2018-04-30 19:39:18 +00:00
linkx.go [dev.link] all: clean up some TODOs 2019-11-01 20:13:05 +00:00
linkx_run.go cmd/compile: don't statically copy string-typed variables 2019-10-03 18:08:32 +00:00
literal.go
literal2.go cmd/compile: accept 'i' suffix orthogonally on all numbers 2019-02-19 22:45:09 +00:00
live.go cmd/compile,cmd/link: fix and re-enable open-coded defers on riscv64 2020-01-29 16:34:44 +00:00
live1.go
live2.go cmd/compile: extend ssa.go to handle 1-element array and 1-field struct 2019-09-03 19:33:04 +00:00
live_syscall.go cmd/compile: trim function name prefix from escape diagnostics 2019-09-16 15:30:51 +00:00
locklinear.go test: skip locklinear's lockmany test for now 2018-04-05 10:53:40 +00:00
loopbce.go cmd/compile: detect indvars that are bound by other indvars 2019-09-26 18:47:12 +00:00
makechan.go test: remove duplicate code from makechan/makemap 2020-04-19 07:51:23 +00:00
makemap.go test: remove duplicate code from makechan/makemap 2020-04-19 07:51:23 +00:00
makenew.go
makeslice.go cmd/compile: optimize make+copy pattern to avoid memclr 2020-05-07 17:50:24 +00:00
mallocfin.go test: commentary for [h-m]*.go 2012-02-23 18:47:26 +11:00
map.go test/mapnan.go: add regression test for non-empty interfaces. 2014-08-06 17:02:55 -04:00
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
method.go test: a number of fixes. 2013-02-11 18:20:52 -05:00
method1.go cmd/compile: ignore receiver parameters in Eqtype 2016-03-17 00:38:15 +00:00
method2.go cmd/compile: add two error position tests for the typechecker 2017-10-12 20:50:20 +00:00
method3.go test: commentary for [h-m]*.go 2012-02-23 18:47:26 +11:00
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
named.go
named1.go
nil.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
nilcheck.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nilptr.go cmd/compile: fix nilcheck for AIX 2018-11-26 14:13:53 +00:00
nilptr2.go test: use a real use function in nilptr2.go 2019-05-11 03:02:33 +00:00
nilptr3.go cmd/compile: fix nilcheck for AIX 2018-11-26 14:13:53 +00:00
nilptr4.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nilptr5.go
nilptr5_aix.go
nilptr5_wasm.go
nilptr_aix.go cmd/compile: fix nilcheck for AIX 2018-11-26 14:13:53 +00:00
nosplit.go runtime: static lock ranking for the runtime (enabled by GOEXPERIMENT) 2020-04-07 21:51:03 +00:00
notinheap.go
notinheap2.go
notinheap3.go
nowritebarrier.go cmd/compile: allow mid-stack inlining when there is a cycle of recursion 2020-04-03 21:43:52 +00:00
nul1.go
opt_branchlikely.go all: fix typos 2019-09-08 17:28:20 +00:00
parentype.go
peano.go
phiopt.go test: re-enable phi optimization test 2016-09-13 20:06:13 +00:00
print.go
print.out
printbig.go
printbig.out
prove.go cmd/compile: in prove, zero right shifts of positive int by #bits - 1 2020-05-11 16:23:52 +00:00
range.go cmd/compile: improve single blank variable handling in walkrange 2017-09-12 05:50:54 +00:00
recover.go
recover1.go
recover2.go cmd/compile,runtime: generate hash functions only for types which are map keys 2019-09-03 20:41:29 +00:00
recover3.go
recover4.go
recover5.go
reflectmethod1.go cmd/compile: track reflect.Type.Method in deadcode 2016-03-11 21:19:20 +00:00
reflectmethod2.go cmd/compile: track reflect.Type.Method in deadcode 2016-03-11 21:19:20 +00:00
reflectmethod3.go cmd/compile: track reflect.Type.Method in deadcode 2016-03-11 21:19:20 +00:00
reflectmethod4.go cmd/link: treat reflect.Value.Method like Call 2016-03-11 22:07:02 +00:00
reflectmethod5.go cmd/compile: when marking REFLECTMETHOD, check for reflect package itself 2020-04-19 03:12:32 +00:00
reflectmethod6.go cmd/compile: when marking REFLECTMETHOD, check for reflect package itself 2020-04-19 03:12:32 +00:00
rename.go
rename1.go cmd/compile: rewrite untyped constant conversion logic 2019-09-06 23:15:48 +00:00
reorder.go
reorder2.go
retjmp.go
return.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
rotate.go
rotate0.go
rotate1.go
rotate2.go
rotate3.go
run.go test: make runindir tests pass regardless of whether module mode is in use 2020-03-25 14:19:25 +00:00
rune.go
runtime.go
shift1.go cmd/compile: rewrite untyped constant conversion logic 2019-09-06 23:15:48 +00:00
shift2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
sieve.go
sigchld.go
sigchld.out
simassign.go test/[n-z]*.go: add documentation 2012-02-24 11:48:19 +11:00
sinit.go cmd/compile: fix static initializer 2018-12-03 16:48:21 +00:00
sinit_run.go test: avoid writing temporary files to GOROOT 2019-11-18 14:40:07 +00:00
sizeof.go
slice3.go
slice3err.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
slicecap.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
sliceopt.go cmd/compile: make prove pass use unsatisfiability 2018-03-08 22:25:25 +00:00
solitaire.go test/[n-z]*.go: add documentation 2012-02-24 11:48:19 +11:00
stack.go test/[n-z]*.go: add documentation 2012-02-24 11:48:19 +11:00
stackobj.go cmd/compile,runtime: remove ambiguously live logic 2018-10-03 19:54:16 +00:00
stackobj2.go test: stress test for stack objects 2018-10-03 19:54:29 +00:00
stackobj3.go cmd/compile,runtime: remove ambiguously live logic 2018-10-03 19:54:16 +00:00
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 all: fix typos 2019-09-08 17:28:20 +00:00
string_lit.go test: add []rune case to string_lit.go 2013-12-12 17:17:02 -08:00
stringrange.go
struct0.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
switch.go cmd/gc: disallow fallthrough in final case of switch 2013-03-15 00:35:09 -04:00
switch2.go cmd/compile/internal/syntax: match old parser errors and line numbers 2016-08-19 01:10:21 +00:00
switch3.go cmd/gc: accept switches on comparable arrays. 2012-08-03 21:47:26 +02:00
switch4.go cmd/gc: disallow fallthrough in final case of switch 2013-03-15 00:35:09 -04:00
switch5.go Revert "fmt: fix incorrect format of whole-number floats when using %#v" 2018-10-16 21:54:35 +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 runtime: fix finalization and profiling of tiny allocations 2015-11-03 18:57:18 +00:00
torture.go
turing.go test/[n-z]*.go: add documentation 2012-02-24 11:48:19 +11:00
typecheck.go test: add copyright notice to typecheck.go 2020-04-17 13:30:49 +00:00
typecheckloop.go cmd/compile: convert typecheck_stack to []*Node 2015-09-06 23:50:51 +00:00
typeswitch.go test/[n-z]*.go: add documentation 2012-02-24 11:48:19 +11:00
typeswitch1.go
typeswitch2.go cmd/compile: move duplicate type-case checking into typecheck 2019-09-11 23:33:11 +00:00
typeswitch2b.go cmd/compile/internal/gc: reword "declared and not used" error message 2019-10-28 23:34:13 +00:00
typeswitch3.go test: fix spelling of `caught be the compiler` to `caught by the compiler` 2018-10-04 00:49:49 +00:00
uintptrescapes.go
uintptrescapes2.go cmd/compile: fix //go:uintptrescapes for basic method calls 2019-11-05 00:26:30 +00:00
uintptrescapes3.go cmd/compile: fix //go:uintptrescapes for basic method calls 2019-11-05 00:26:30 +00:00
undef.go
utf.go test/[n-z]*.go: add documentation 2012-02-24 11:48:19 +11:00
varerr.go
varinit.go test/[n-z]*.go: add documentation 2012-02-24 11:48:19 +11:00
winbatch.go all: treat all files as binary, but check in .bat with CRLF 2020-06-08 15:31:43 +00:00
writebarrier.go cmd/compile: improve generated code for concrete cases in type switches 2020-04-14 17:34:31 +00:00
zerodivide.go

README.md

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.