1
0
mirror of https://github.com/golang/go synced 2024-09-29 02:14:29 -06:00
go/test
Jorropo 8b4e1259d0 cmd/compile: fix findIndVar so it does not match disjointed loop headers
Fix #63955

parseIndVar, prove and maybe more are on the assumption that the loop header
is a single block. This can be wrong, ensure we don't match theses cases we
don't know how to handle.

In the future we could update them so that they know how to handle such cases
but theses cases seems rare so I don't think the value would be really high.
We could also run a loop canonicalization pass first which could handle this.

The repro case looks weird because I massaged it so it would crash with the
previous compiler.

Change-Id: I4aa8afae9e90a17fa1085832250fc1139c97faa6
Reviewed-on: https://go-review.googlesource.com/c/go/+/539977
Reviewed-by: Heschi Kreinick <heschi@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2023-11-07 17:37:47 +00:00
..
abi test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
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: optimize right shifts of int32 on riscv64 2023-10-30 14:47:06 +00:00
ddd2.dir
dwarf
fixedbugs cmd/compile: fix findIndVar so it does not match disjointed loop headers 2023-11-07 17:37:47 +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 runtime: replace all uses of CtzXX with TrailingZerosXX 2022-10-18 18:06:27 +00:00
ken
linkname.dir
method4.dir
retjmp.dir
runtime
stress
syntax
typeparam test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
uintptrescapes.dir
64bit.go
235.go
alg.go
alias1.go
alias2.go
alias3.go
alias.go
align.go
append1.go
append.go
args.go
armimm.go
asmhdr.go
assign1.go
assign.go
atomicload.go
bigalg.go
bigmap.go
blank1.go
blank.go
bom.go
bombad.go
bounds.go
cannotassign.go
chancap.go
chanlinear.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
char_lit1.go
char_lit.go
checkbce.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
clear.go cmd/compile: add clear(x) builtin 2023-01-31 19:43:07 +00:00
clearfat.go
closedchan.go
closure1.go
closure2.go cmd/compile: experimental loop iterator capture semantics change 2023-03-06 18:34:24 +00:00
closure3.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
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
const1.go
const2.go
const3.go
const4.go
const5.go
const6.go
const7.go all: add wasip1 support 2023-04-11 20:56:32 +00:00
const8.go
const.go
convert1.go
convert2.go
convert3.go
convert4.go
convert.go
convinline.go cmd/compile: handle integer conversions in static init inliner 2022-11-17 13:46:05 +00:00
convlit1.go
convlit.go
convT2X.go
copy1.go
copy.go
crlf.go
ddd1.go
ddd2.go
ddd.go
decl.go
declbad.go
defer.go
defererrcheck.go
deferfin.go
defernil.go
deferprint.go
deferprint.out
devirt.go
directive2.go
directive.go
divide.go
divmod.go
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
escape4.go cmd/compile/internal/inl: inline based on scoring when GOEXPERIMENT=newinliner 2023-09-14 19:43:26 +00:00
escape5.go cmd/compile/internal/noder: stop preserving original const strings 2023-09-08 18:50:24 +00:00
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
escape_goto.go
escape_hash_maphash.go
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 cmd/compile/internal/noder: stop preserving original const strings 2023-09-08 18:50:24 +00:00
escape_runtime_atomic.go
escape_selfassign.go
escape_slice.go cmd/compile/internal/noder: stop preserving original const strings 2023-09-08 18:50:24 +00:00
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
fuse.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
gc1.go
gc2.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
gc.go
gcgort.go
gcstring.go
goprint.go
goprint.out
goto.go
heapsampling.go
helloworld.go
helloworld.out
if.go
import1.go
import2.go
import4.go
import5.go
import6.go
import.go
index0.go
index1.go
index2.go
index.go
indirect1.go
indirect.go
init1.go
init.go
initcomma.go
initexp.go
initialize.go cmd/compile: handle simple inlined calls in staticinit 2022-11-16 04:04:52 +00:00
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 test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
inline_sync.go sync: use atomic.Uint32 in Once 2023-10-06 21:01:50 +00:00
inline_variadic.go
inline.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
int_lit.go
intcvt.go
intrinsic_atomic.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
intrinsic.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
iota.go
label1.go
label.go
linkmain_run.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
linkmain.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
linkname3.go
linkname.go
linkobj.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
linkx_run.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +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 test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
live_uintptrkeepalive.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
live.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
loopbce.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
mainsig.go
makechan.go
makemap.go
makenew.go
makeslice.go
mallocfin.go
map1.go
map.go
mapclear.go
maplinear.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
maymorestack.go
mergemul.go
method1.go
method2.go
method3.go
method4.go
method5.go
method6.go
method7.go
method.go
named1.go
named.go
newinline.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
nil.go
nilcheck.go
nilptr2.go
nilptr3.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
nilptr4.go
nilptr5_aix.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
nilptr5_wasm.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
nilptr5.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
nilptr_aix.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
nilptr.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
noinit.go cmd/compile: reenable inline static init 2023-04-14 17:57:36 +00:00
nosplit.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
nowritebarrier.go cmd/compile: redo IsRuntimePkg/IsReflectPkg predicate 2023-08-22 19:18:21 +00:00
nul1.go
opt_branchlikely.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
parentype.go
peano.go
phiopt.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
print.go
print.out
printbig.go
printbig.out
prove_constant_folding.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
prove_invert_loop_with_unused_iterators.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
prove.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
range2.go cmd/compile, go/types: typechecking of range over int, func 2023-09-20 14:52:29 +00:00
range3.go test: run range-over-integer tests without need for -goexperiment 2023-11-02 04:17:21 +00:00
range4.go test: run range-over-integer tests without need for -goexperiment 2023-11-02 04:17:21 +00:00
range.go
rangegen.go cmd/compile: implement range over func 2023-09-20 14:52:38 +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 test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
recover5.go
recover.go
reflectmethod1.go
reflectmethod2.go
reflectmethod3.go
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
shift2.go
shift3.go
sieve.go
sigchld.go test: migrate remaining files to go:build syntax 2023-10-19 23:33:25 +00:00
sigchld.out
simassign.go
sizeof.go
slice3.go
slice3err.go
slicecap.go
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
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
typecheck.go
typecheckloop.go
typeswitch1.go
typeswitch2.go
typeswitch2b.go
typeswitch3.go
typeswitch.go
uintptrescapes2.go
uintptrescapes3.go
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
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.