1
0
mirror of https://github.com/golang/go synced 2024-11-22 14:44:50 -07:00
go/test
Keith Randall 556e9c5f3e cmd/compile: allow non-pointer writes in the middle of a write barrier
This lets us combine more write barriers, getting rid of some of the
test+branch and gcWriteBarrier* calls.
With the new write barriers, it's easy to add a few non-pointer writes
to the set of values written.

We allow up to 2 non-pointer writes between pointer writes. This is enough
for, for example, adjacent slice fields.

Fixes #62126

Change-Id: I872d0fa9cc4eb855e270ffc0223b39fde1723c4b
Reviewed-on: https://go-review.googlesource.com/c/go/+/521498
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Keith Randall <khr@google.com>
2023-08-23 00:16:06 +00:00
..
abi
alias3.dir
arenas reflect: fix ArenaNew to match documentation 2023-06-16 17:08:43 +00:00
asmhdr.dir
chan
closure3.dir cmd/compile/internal/noder: remove inlined closure naming hack 2023-08-17 19:36:29 +00:00
closure5.dir
codegen cmd/compile: allow non-pointer writes in the middle of a write barrier 2023-08-23 00:16:06 +00:00
ddd2.dir
dwarf
fixedbugs cmd/compile/internal/typecheck: push ONEW into go/defer wrappers 2023-08-17 19:37:04 +00:00
import2.dir
import4.dir
interface go/types, types2: more systematic use of Checker.use und useLHS 2023-03-28 14:28:33 +00:00
intrinsic.dir
ken
linkname.dir
method4.dir
retjmp.dir
runtime
stress
syntax
typeparam go/types, types2: don't infer type argument for unused parameter in interfaces 2023-05-25 21:37:01 +00:00
uintptrescapes.dir
64bit.go
235.go
alg.go
alias1.go
alias2.go
alias3.go
alias.go
align.go
append1.go cmd/compile: use "cannot use %s as %s value in %s: %s" error message 2022-09-28 22:28:39 +00:00
append.go
args.go
armimm.go
asmhdr.go
assign1.go test: [a-c]: add introductory comments to tests 2012-02-19 13:19:43 +11:00
assign.go
atomicload.go
bigalg.go
bigmap.go
blank1.go
blank.go
bom.go
bombad.go
bounds.go
cannotassign.go
chancap.go
chanlinear.go
char_lit1.go
char_lit.go
checkbce.go Revert "cmd/compile: sparse conditional constant propagation" 2023-05-24 14:39:34 +00:00
clear.go
clearfat.go [dev.power64] 9g: fix under-zeroing in clearfat 2014-10-31 11:08:27 -04:00
closedchan.go
closure1.go cmd/gc: capture variables by value 2015-01-29 13:07:30 +00:00
closure2.go cmd/compile: experimental loop iterator capture semantics change 2023-03-06 18:34:24 +00:00
closure3.go
closure4.go
closure5.go
closure6.go
closure7.go
closure.go
cmp6.go
cmp.go
cmplx.go
cmplxdivide1.go
cmplxdivide.c
cmplxdivide.go
complit1.go
complit.go
compos.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
const1.go
const2.go
const3.go test: [a-c]: add introductory comments to tests 2012-02-19 13:19:43 +11:00
const4.go
const5.go
const6.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
const7.go all: add wasip1 support 2023-04-11 20:56:32 +00:00
const8.go
const.go
convert1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
convert2.go
convert3.go
convert4.go
convert.go
convinline.go
convlit1.go
convlit.go
convT2X.go
copy1.go
copy.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
crlf.go
ddd1.go
ddd2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
ddd.go
decl.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
declbad.go
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
deferprint.go
deferprint.out test: split golden.out into expected output per test 2012-01-18 16:12:24 -08:00
devirt.go
directive2.go
directive.go
divide.go
divmod.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
embedfunc.go
embedvers.go
empty.go
env.go test,internal/testdir: don't set GOOS/GOARCH 2023-05-12 12:34:59 +00:00
eof1.go
eof.go
escape2.go cmd/compile: enable -d=zerocopy by default 2023-08-18 11:59:42 +00:00
escape2n.go cmd/compile: enable -d=zerocopy by default 2023-08-18 11:59:42 +00:00
escape3.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape4.go
escape5.go
escape_array.go
escape_calls.go
escape_closure.go cmd/compile/internal/escape: optimize indirect closure calls 2023-08-17 16:36:09 +00:00
escape_field.go cmd/compile: use clearer error message for stuct literal 2020-09-12 08:31:49 +00:00
escape_goto.go [dev.typeparams] test: rename blank functions 2021-07-28 21:41:07 +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 test: remove *_unified.go variants 2023-05-23 17:16:35 +00:00
escape_indir.go
escape_level.go
escape_map.go
escape_mutations.go cmd/compile: restore zero-copy string->[]byte optimization 2023-08-18 11:58:37 +00:00
escape_param.go
escape_reflect.go test: add escape test for reflect.Value operations 2023-05-12 23:13:19 +00:00
escape_runtime_atomic.go
escape_selfassign.go test: add regress test cases for self-assignment 2019-04-17 16:36:56 +00:00
escape_slice.go
escape_struct_param1.go
escape_struct_param2.go
escape_struct_return.go
escape_sync_atomic.go
escape_unsafe.go
escape.go cmd/compile: experimental loop iterator capture semantics change 2023-03-06 18:34:24 +00:00
fibo.go
finprofiled.go
float_lit2.go
float_lit3.go
float_lit.go
floatcmp.go
for.go test: add test cases for index value with range array clear 2023-07-10 16:36:41 +00:00
func1.go
func2.go
func3.go
func4.go
func5.go
func6.go
func7.go
func8.go
func.go
funcdup2.go
funcdup.go [dev.typeparams] test: enable some more errorcheck tests 2020-12-04 21:22:23 +00:00
fuse.go
gc1.go test: explanatory comments [c-g]* 2012-02-19 14:28:53 +11:00
gc2.go
gc.go
gcgort.go
gcstring.go
goprint.go
goprint.out
goto.go
heapsampling.go
helloworld.go
helloworld.out
if.go
import1.go
import2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
import4.go
import5.go
import6.go
import.go
index0.go
index1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
index2.go
index.go
indirect1.go
indirect.go
init1.go
init.go
initcomma.go
initexp.go
initialize.go
initializerr.go
initloop.go
inline_big.go cmd/compile: restore zero-copy string->[]byte optimization 2023-08-18 11:58:37 +00:00
inline_caller.go
inline_callers.go
inline_endian.go
inline_literal.go
inline_math_bits_rotate.go
inline_sync.go reflect: do not escape Value.Type 2023-05-12 21:11:51 +00:00
inline_variadic.go
inline.go test: remove *_unified.go variants 2023-05-23 17:16:35 +00:00
int_lit.go
intcvt.go
intrinsic_atomic.go
intrinsic.go
iota.go test: commentary for [h-m]*.go 2012-02-23 18:47:26 +11:00
label1.go
label.go
linkmain_run.go all: add wasip1 support 2023-04-11 20:56:32 +00:00
linkmain.go
linkname3.go
linkname.go test: remove -newescape from regress tests 2019-08-28 19:27:20 +00:00
linkobj.go all: add wasip1 support 2023-04-11 20:56:32 +00:00
linkx_run.go all: add wasip1 support 2023-04-11 20:56:32 +00:00
linkx.go
literal2.go
literal.go
live1.go
live2.go cmd/compile/internal/reflectdata: share hmap and hiter types 2023-08-21 23:29:33 +00:00
live_regabi.go cmd/compile/internal/walk: reuse runtime.scase 2023-08-21 23:34:34 +00:00
live_uintptrkeepalive.go all: add wasip1 support 2023-04-11 20:56:32 +00:00
live.go cmd/compile/internal/walk: reuse runtime.scase 2023-08-21 23:34:34 +00:00
loopbce.go Revert "cmd/compile: sparse conditional constant propagation" 2023-05-24 14:39:34 +00:00
mainsig.go
makechan.go
makemap.go
makenew.go
makeslice.go cmd/compile: optimize make+copy pattern to avoid memclr 2020-05-07 17:50:24 +00:00
mallocfin.go
map1.go
map.go test/mapnan.go: add regression test for non-empty interfaces. 2014-08-06 17:02:55 -04:00
mapclear.go
maplinear.go
maymorestack.go
mergemul.go
method1.go
method2.go
method3.go
method4.go
method5.go
method6.go
method7.go
method.go
named1.go
named.go
nil.go
nilcheck.go
nilptr2.go
nilptr3.go cmd/compile: casts from slices to array pointers are known to be non-nil 2023-03-29 21:55:11 +00:00
nilptr4.go
nilptr5_aix.go
nilptr5_wasm.go
nilptr5.go
nilptr_aix.go cmd/compile: fix nilcheck for AIX 2018-11-26 14:13:53 +00:00
nilptr.go
noinit.go cmd/compile: reenable inline static init 2023-04-14 17:57:36 +00:00
nosplit.go runtime, cmd: rationalize StackLimit and StackGuard 2023-04-21 19:28:56 +00:00
nowritebarrier.go cmd/compile: redo IsRuntimePkg/IsReflectPkg predicate 2023-08-22 19:18:21 +00:00
nul1.go
opt_branchlikely.go
parentype.go
peano.go
phiopt.go
print.go
print.out
printbig.go
printbig.out
prove_constant_folding.go
prove_invert_loop_with_unused_iterators.go cmd/compile: try to rewrite loops to count down 2023-07-31 18:33:29 +00:00
prove.go cmd/compile: teach prove about bitwise OR operation 2023-04-10 17:13:41 +00:00
range.go cmd/compile: improve single blank variable handling in walkrange 2017-09-12 05:50:54 +00:00
README.md internal/testdir: move to cmd/internal/testdir 2023-05-12 17:18:08 +00:00
recover1.go
recover2.go
recover3.go
recover4.go
recover5.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
recover.go
reflectmethod1.go
reflectmethod2.go
reflectmethod3.go cmd/compile: track reflect.Type.Method in deadcode 2016-03-11 21:19:20 +00:00
reflectmethod4.go
reflectmethod5.go
reflectmethod6.go
reflectmethod7.go
reflectmethod8.go
rename1.go cmd/compile/internal/types2: only mark variables as used if they are 2023-04-19 14:07:00 +00:00
rename.go
reorder2.go
reorder.go
retjmp.go
return.go
rotate0.go
rotate1.go
rotate2.go
rotate3.go
rotate.go
rune.go
runtime.go
shift1.go test: re-enable a bunch of tests with types2 2021-12-03 16:24:32 +00:00
shift2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
shift3.go cmd/compile: adjust types2 shift check to match go/types (cleanup) 2022-04-07 17:19:55 +00:00
sieve.go
sigchld.go all: add wasip1 support 2023-04-11 20:56:32 +00:00
sigchld.out
simassign.go
sizeof.go
slice3.go
slice3err.go [dev.typeparams] test: finish triaging all outstanding failing tests 2020-12-14 21:28:48 +00:00
slicecap.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
sliceopt.go
solitaire.go
stack.go
stackobj2.go
stackobj3.go
stackobj.go
strcopy.go
strength.go
string_lit.go
stringrange.go
struct0.go
switch2.go
switch3.go
switch4.go
switch5.go [dev.typeparams] test: finish triaging all outstanding failing tests 2020-12-14 21:28:48 +00:00
switch6.go
switch7.go
switch.go
tighten.go cmd/compile: enhance tighten pass for memory values 2023-05-16 01:01:38 +00:00
tinyfin.go
torture.go
turing.go test/[n-z]*.go: add documentation 2012-02-24 11:48:19 +11:00
typecheck.go
typecheckloop.go
typeswitch1.go test/[n-z]*.go: add documentation 2012-02-24 11:48:19 +11:00
typeswitch2.go
typeswitch2b.go
typeswitch3.go
typeswitch.go
uintptrescapes2.go
uintptrescapes3.go cmd/compile: fix //go:uintptrescapes for basic method calls 2019-11-05 00:26:30 +00:00
uintptrescapes.go
uintptrkeepalive.go
undef.go
unsafe_slice_data.go
unsafe_string_data.go
unsafe_string.go
unsafebuiltins.go
used.go
utf.go
varerr.go [dev.typeparams] test: enable some more errorcheck tests 2020-12-04 21:22:23 +00:00
varinit.go
winbatch.go
writebarrier.go
zerodivide.go
zerosize.go cmd/link: put zero-sized data symbols at same address as runtime.zerobase 2023-04-28 18:35:43 +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 test cmd/internal/testdir

To run just tests from specified files in this directory, execute:

../bin/go test cmd/internal/testdir -run='Test/(file1.go|file2.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.