go/test
Cherry Zhang 1edfd64761 [release-branch.go1.8] cmd/compile: do not use "oaslit" for global
The compiler did not emit write barrier for assigning global with
struct literal, like global = T{} where T contains pointer.

The relevant code path is:
walkexpr OAS var_ OSTRUCTLIT
    oaslit
        anylit OSTRUCTLIT
            walkexpr OAS var_ nil
            return without adding write barrier
    return true
break (without adding write barrier)

This CL makes oaslit not apply to globals. See also CL
https://go-review.googlesource.com/c/36355/ for an alternative
fix.

The downside of this is that it generates static data for zeroing
struct now. Also this only covers global. If there is any lurking
bug with implicit zeroing other than globals, this doesn't fix.

Fixes #18956.

Change-Id: Ibcd27e4fae3aa38390ffa94a32a9dd7a802e4b37
Reviewed-on: https://go-review.googlesource.com/36410
Reviewed-by: Russ Cox <rsc@golang.org>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
(cherry picked from commit 160914e33c)
Reviewed-on: https://go-review.googlesource.com/36531
2017-02-07 17:39:16 +00:00
..
bench test/bench/go1: reduce fasta data size for mips{,64} 2016-12-13 22:04:23 +00:00
chan all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
ddd2.dir all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
dwarf
fixedbugs [release-branch.go1.8] cmd/compile/internal/syntax: make a parser error "1.7 compliant" 2017-02-07 16:51:22 +00:00
import2.dir all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
import4.dir test: adjust gccgo expected import errors 2015-10-07 14:37:44 +00:00
interface cmd/compile: do more type conversion inline 2016-11-02 21:33:03 +00:00
intrinsic.dir cmd/compile: intrinsify Ctz, Bswap on ARM 2016-09-12 19:26:31 +00:00
ken all: fix spelling mistakes 2016-04-03 17:03:15 +00:00
method4.dir
safe
stress all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
syntax cmd/compile/internal/gc: enable new parser by default 2016-10-25 22:28:40 +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 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
append.go
args.go
assign.go
assign1.go
atomicload.go cmd/compile: keep value use counts in SSA 2016-03-17 04:20:02 +00:00
bigalg.go
bigmap.go
blank.go
blank1.go cmd/compile: don't allow blank method declarations on builtins 2015-12-02 18:26:38 +00:00
bom.go
bombad.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
bounds.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
chancap.go
chanlinear.go
char_lit.go
char_lit1.go
checkbce.go cmd/compile: optimize integer "in range" expressions 2016-08-25 03:49:16 +00:00
clearfat.go
closedchan.go
closure.go
closure1.go
closure2.go
cmp.go
cmp6.go
cmplx.go
cmplxdivide.c all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
cmplxdivide.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
cmplxdivide1.go
complit.go
complit1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +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: fix compiler bug for constant equality comparison 2016-09-17 01:12:24 +00:00
const1.go
const2.go
const3.go
const4.go
const5.go
const6.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
convT2X.go
convert.go
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
convlit.go
convlit1.go
copy.go
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: improve not enough / too many arguments errors 2016-10-28 21:53:07 +00:00
ddd2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
decl.go
declbad.go
defer.go
deferfin.go
deferprint.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
deferprint.out
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
env.go
eof.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
eof1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
errchk cmd/vet: make checking example names in _test packages more robust 2016-06-28 22:09:00 +00:00
escape.go
escape2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape2n.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape3.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape4.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape5.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_array.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_because.go cmd/compile: add explicit 'where' to EscStep data for explanations 2016-10-26 18:46:59 +00:00
escape_calls.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_closure.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_field.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
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 all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_level.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_map.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_param.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_slice.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_struct_param1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_struct_param2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
escape_struct_return.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
fibo.go
finprofiled.go runtime: fix finalization and profiling of tiny allocations 2015-11-03 18:57:18 +00:00
float_lit.go
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
for.go
func.go
func1.go
func2.go
func3.go
func4.go
func5.go
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 all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
funcdup2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
gc.go
gc1.go
gc2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
gcstring.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
goprint.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
goprint.out
goto.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
heapsampling.go test: really force heap profile update in heapsampling.go 2015-11-12 18:32:13 +00:00
helloworld.go
helloworld.out
if.go
import.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
index.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
index0.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
index1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
index2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
indirect.go
indirect1.go
init.go
init1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
initcomma.go
initialize.go
initializerr.go
initloop.go cmd/compile: use []*Node instead of NodeList in sinit 2015-09-05 02:25:01 +00:00
inline.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
inline_variadic.go cmd/compile: generate code that type checks when inlining variadic functions 2016-11-30 19:46:00 +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 Ctz, Bswap on ARM 2016-09-12 19:26:31 +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 all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
linkmain.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
linkmain_run.go test: fix linkmain test 2015-12-17 23:36:13 +00:00
linkobj.go cmd/compile: add -linkobj flag to allow writing object file in two parts 2016-05-09 17:31:45 +00:00
linkx.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
linkx_run.go test: print output on link -X failure 2016-04-20 17:37:35 +00:00
literal.go
live.go cmd/compile: insert scheduling checks on loop backedges 2017-01-09 21:01:29 +00:00
live1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
live2.go cmd/compile: mark temps with new AutoTemp flag, and use it. 2016-10-31 19:38:50 +00:00
live_syscall.go cmd/compile: mark temps with new AutoTemp flag, and use it. 2016-10-31 19:38:50 +00:00
loopbce.go cmd/compile: bce when max and limit are consts 2016-04-11 16:01:22 +00:00
mallocfin.go
map.go
map1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
maplinear.go
method.go
method1.go cmd/compile: ignore receiver parameters in Eqtype 2016-03-17 00:38:15 +00:00
method2.go test: avoid matching file names in errcheck 2016-10-18 05:32:37 +00:00
method3.go
method4.go
method5.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
named.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
named1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nil.go
nilcheck.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nilptr.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nilptr2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nilptr3.go cmd/compile: don't use nilcheck information until the next block 2017-01-20 20:21:55 +00:00
nilptr4.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nosplit.go test: add mipsx case to nosplit.go 2016-12-15 22:43:28 +00:00
notinheap.go cmd/compile: add go:notinheap type pragma 2016-10-15 17:58:14 +00:00
notinheap2.go cmd/compile: add go:notinheap type pragma 2016-10-15 17:58:14 +00:00
nowritebarrier.go cmd/compile, runtime: add go:yeswritebarrierrec pragma 2016-10-15 17:58:11 +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
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: Repurpose old sliceopt.go for prove phase. 2016-10-20 23:50:19 +00:00
range.go cmd/compile: move stringtoslicebytetmp to the backend 2016-10-28 07:58:47 +00:00
recover.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
recover1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
recover2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
recover3.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
recover4.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
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
rename.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
rename1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
reorder.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
reorder2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
return.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
rotate.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
rotate0.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
rotate1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
rotate2.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
rotate3.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
run.go cmd/compile: insert scheduling checks on loop backedges 2017-01-09 21:01:29 +00:00
rune.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
runtime.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
shift1.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +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
sinit.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
sinit_run.go
sizeof.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
slice3.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
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: use masks instead of branches for slicing 2016-10-27 20:22:49 +00:00
solitaire.go
stack.go
strength.go cmd/compile: generalize strength reduction of mulq 2016-03-30 22:27:13 +00:00
string_lit.go
stringrange.go
struct0.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
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 cmd/compile: fix detection of duplicate cases for integer ranges 2016-10-21 22:55:28 +00:00
switch6.go cmd/compile: set correct line number for multiple defaults in switch error 2016-08-22 19:56:06 +00:00
tinyfin.go runtime: fix finalization and profiling of tiny allocations 2015-11-03 18:57:18 +00:00
torture.go
turing.go
typecheck.go
typecheckloop.go cmd/compile: convert typecheck_stack to []*Node 2015-09-06 23:50:51 +00:00
typeswitch.go
typeswitch1.go
typeswitch2.go
typeswitch3.go
uintptrescapes.go cmd/compile, syscall: add //go:uintptrescapes comment, and use it 2016-07-06 20:48:41 +00:00
uintptrescapes2.go cmd/compile: mark temps with new AutoTemp flag, and use it. 2016-10-31 19:38:50 +00:00
undef.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
utf.go
varerr.go all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
varinit.go
writebarrier.go [release-branch.go1.8] cmd/compile: do not use "oaslit" for global 2017-02-07 17:39:16 +00:00
zerodivide.go test: lock in test for _ assignment evaluation/zerodivide panic 2016-12-23 17:35:24 +00:00