1
0
mirror of https://github.com/golang/go synced 2024-11-26 13:08:08 -07:00
go/test
Luuk van Dijk 507fcf37d2 cmd/gc: escape analysis to track flow of in to out parameters.
includes step 0: synthesize outparams, from 6600044
includes step 1,2: give outparams loopdepth 0 and verify unchanged results
         generate esc:$mask tags, but still tie to sink if a param has mask != 0
from 6610054

adds final steps:
- have esccall generate n->escretval, a list of nodes the function results flow to
- use these in esccall and ORETURN/OAS2FUNC/and f(g())
- only tie parameters to sink if tag is absent, otherwise according to mask, tie them to escretval

R=rsc, bradfitz
CC=dave, gobot, golang-dev, iant, rsc
https://golang.org/cl/6741044
2012-10-29 13:38:21 +01:00
..
bench
bugs
chan
ddd2.dir
dwarf
fixedbugs
import2.dir
import4.dir
interface
ken
method4.dir
safe
syntax
64bit.go
235.go
alias1.go
alias.go
append.go
args.go
assign1.go
assign.go
bigalg.go
bigmap.go
blank1.go
blank.go
bom.go
bombad.go
bounds.go
chancap.go
char_lit1.go
char_lit.go
closedchan.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
const.go
convert1.go
convert3.go
convert.go
convlit1.go
convlit.go
convT2X.go
copy.go
crlf.go
ddd1.go
ddd2.go
ddd.go
decl.go
declbad.go
defer.go
deferprint.go
deferprint.out
divide.go
empty.go
env.go
eof1.go
eof.go
errchk
escape2.go
escape3.go
escape4.go
escape5.go
escape.go
float_lit.go
floatcmp.go
for.go
func1.go
func2.go
func3.go
func4.go
func5.go
func6.go
func7.go
func8.go
func.go
gc1.go
gc2.go
gc.go
golden.out
goprint.go
goprint.out
goto.go
helloworld.go
helloworld.out
if.go
import1.go
import2.go
import4.go
import5.go
import.go
index.go
indirect1.go
indirect.go
init1.go
init.go
initcomma.go
initialize.go
initializerr.go
int_lit.go
intcvt.go
iota.go
label1.go
label.go
linkx.go
literal.go
mallocfin.go
map1.go
map.go
method1.go
method2.go
method3.go
method4.go
method.go
named1.go
named.go
nil.go
nilptr.go
nul1.go
parentype.go
peano.go
printbig.go
printbig.out
range.go
recover1.go
recover2.go
recover3.go
recover.go
rename1.go
rename.go
reorder2.go
reorder.go
rotate.go
run
run.go
rune.go
runtime.go
shift1.go
shift2.go
sieve.go
sigchld.go
sigchld.out
simassign.go
sinit.go
sizeof.go
solitaire.go
stack.go
string_lit.go
stringrange.go
struct0.go
switch3.go
switch.go
testlib
torture.go
turing.go
typecheck.go
typeswitch1.go
typeswitch2.go
typeswitch3.go
typeswitch.go
undef.go
utf.go
varerr.go
varinit.go
zerodivide.go