1
0
mirror of https://github.com/golang/go synced 2024-09-30 06:24:33 -06:00
go/test
Robert Griesemer b569b87ca1 cmd/compile/internal/gc: recursive-descent parser
This is a translation of the yacc-based parser with adjustements
to make the grammar work for a recursive-descent parser followed
by cleanups and simplifications.

The yacc actions were mostly literally copied for correctness
with better temporary names.

A few of the syntax tests were adjusted for slightly different
error messages (it is very difficult to match the yacc-based
error messages in all cases, and sometimes the new parser could
produce better errors).

The new parser is enabled by default.
To switch back to the yacc-based parser, set -oldparser.
To hardwire the switch back, uncomment "oldparser = 1" in lex.go.

- passes all.bash
- ~18% reduced parse time per file on average for make.bash
- ~3% reduced compile time for building cmd/compile

Change-Id: Icb5651bb9d8b9f66261762d2c94a03793050d4ce
Reviewed-on: https://go-review.googlesource.com/16665
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
2015-11-13 14:53:57 +00:00
..
bench test/bench/shootout: fix build 2015-07-31 17:37:58 +00:00
bugs test: migrate remaining tests to run.go 2014-12-22 22:41:34 +00:00
chan Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
ddd2.dir
dwarf
fixedbugs cmd/compile/internal/gc: recursive-descent parser 2015-11-13 14:53:57 +00:00
import2.dir
import4.dir test: adjust gccgo expected import errors 2015-10-07 14:37:44 +00:00
interface cmd/internal/gc: improve "type *X has no field or method M" message 2015-05-07 16:21:57 +00:00
ken
method4.dir
safe
stress build: adjustments for move from src/pkg to src 2014-09-08 00:06:45 -04:00
syntax cmd/compile/internal/gc: recursive-descent parser 2015-11-13 14:53:57 +00:00
64bit.go
235.go
alias1.go
alias.go
append.go
args.go
assign1.go
assign.go cmd/gc: prohibit short variable declarations containing duplicate symbols 2014-10-06 17:16:39 -04:00
bigalg.go
bigmap.go
blank1.go
blank.go
bom.go
bombad.go
bounds.go
chancap.go
chanlinear.go runtime: test for linear enqueue/dequeue behavior 2014-12-08 22:18:17 +00:00
char_lit1.go
char_lit.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/gc: fix capturing by value for range statements 2015-02-03 15:48:48 +00:00
closure.go
cmp6.go
cmp.go Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
cmplx.go
cmplxdivide1.go
cmplxdivide.c test: comment the behavior and use of cmplxdivide* 2015-01-15 00:00:06 +00:00
cmplxdivide.go test: comment the behavior and use of cmplxdivide* 2015-01-15 00:00:06 +00:00
complit1.go cmd/internal/gc: accept map literals with omitted key type 2015-06-04 02:31:38 +00:00
complit.go
compos.go
const1.go
const2.go
const3.go
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
const.go cmd/compile: allow huge rsh in constants arithmetic 2015-08-21 20:27:22 +00:00
convert1.go
convert3.go
convert.go
convlit1.go
convlit.go cmd/internal/gc: unsafe.Pointer constants may only be converted to uintptr 2015-05-07 23:54:28 +00:00
convT2X.go
copy.go
crlf.go
ddd1.go
ddd2.go
ddd.go
decl.go
declbad.go
defer.go
deferfin.go
deferprint.go
deferprint.out
divide.go
divmod.go
empty.go
env.go
eof1.go
eof.go
errchk Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
escape2.go cmd/compile: escape analysis, don't always escape variadic args 2015-10-04 20:45:35 +00:00
escape2n.go cmd/compile: escape analysis, don't always escape variadic args 2015-10-04 20:45:35 +00:00
escape3.go
escape4.go cmd/internal/gc: transitive inlining 2015-02-26 17:36:00 +00:00
escape5.go cmd/internal/gc: move check for large-hence-heap-allocated types into escape analysis 2015-05-22 02:13:54 +00:00
escape_array.go cmd/internal/gc: move check for large-hence-heap-allocated types into escape analysis 2015-05-22 02:13:54 +00:00
escape_calls.go cmd/internal/gc: make indirect calls properly escape-y 2015-05-22 01:36:11 +00:00
escape_closure.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape_field.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape_iface.go cmd/compile: add case for ODOTTYPE to escwalk 2015-07-30 17:39:44 +00:00
escape_indir.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape_level.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape_map.go test: add tests for escape analysis of interface conversions 2015-03-28 16:15:27 +00:00
escape_param.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape_slice.go cmd/internal/gc: extend escape analysis to pointers in slices 2015-05-18 15:34:39 +00:00
escape_struct_param1.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape_struct_param2.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape_struct_return.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
escape.go
fibo.go Fix whitespace (use blanks consistently). 2014-12-08 22:22:58 +00:00
finprofiled.go runtime: fix finalization and profiling of tiny allocations 2015-11-03 18:57:18 +00:00
float_lit2.go test: fix two typos in float_lit2.go 2014-05-21 17:19:12 -04:00
float_lit3.go test/float_lit2.go: rewrite to test values near boundaries 2014-05-21 17:12:06 -04:00
float_lit.go
floatcmp.go
for.go
func1.go
func2.go
func3.go
func4.go
func5.go
func6.go Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
func7.go Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
func8.go test: use go:noinline consistently 2015-11-03 02:01:34 +00:00
func.go
funcdup2.go
funcdup.go
gc1.go
gc2.go test: check for build constraints only upto the first blank line 2015-02-06 05:36:26 +00:00
gc.go
gcstring.go runtime: fix empty string handling in garbage collector 2014-03-11 23:58:39 -04:00
goprint.go
goprint.out
goto.go Revert "cmd/internal/gc: ignore declarations of types for goto validation" 2015-05-15 16:35:49 +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
import1.go
import2.go
import4.go
import5.go
import.go
index0.go
index1.go
index2.go
index.go Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
indirect1.go
indirect.go
init1.go test: deflake init1.go test, tighten its bounds 2015-02-13 22:13:56 +00:00
init.go
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 cmd/compile: add support for a go:noinline directive 2015-10-29 23:16:27 +00:00
int_lit.go
intcvt.go
iota.go
label1.go
label.go
linkx_run.go cmd/link: detect -X setting non-string variable 2015-06-29 20:28:36 +00:00
linkx.go cmd/link: detect -X setting non-string variable 2015-06-29 20:28:36 +00:00
literal.go
live1.go cmd/gc: correct liveness for fat variables 2014-02-15 10:58:55 -05:00
live2.go cmd/gc: allocate non-escaping maps on stack 2015-02-12 09:53:52 +00:00
live.go test: add -update_errors flag to run script 2015-04-10 11:33:42 +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
maplinear.go test: make maplinear more robust 2014-10-27 18:59:02 -04:00
method1.go
method2.go
method3.go
method4.go
method5.go
method.go
named1.go cmd/gc: comma-ok assignments produce untyped bool as 2nd result 2014-08-11 16:11:55 -07:00
named.go
nil.go
nilcheck.go cmd/gc: optimize existence-only map lookups 2015-01-07 22:36:06 +00:00
nilptr2.go
nilptr3.go test: fix nosplit.go, fixedbugs/issue11656.go and skip two tests for mips64{,le} 2015-11-12 04:52:31 +00:00
nilptr4.go cmd/gc: fix bad checknil with ints on 32 bit compilers 2014-02-26 12:25:13 -08:00
nilptr.go
nosplit.go cmd/internal/obj, cmd/link, runtime: increase stack limit to accommodate larger frames on ppc64x 2015-11-12 22:32:16 +00:00
nul1.go
parentype.go
peano.go
print.go runtime: move built-in print routines to go. 2014-07-31 13:48:48 -07:00
print.out runtime: move built-in print routines to go. 2014-07-31 13:48:48 -07:00
printbig.go
printbig.out
range.go cmd/gc: implement 'for range x {' 2014-07-16 19:27:10 -04:00
recover1.go
recover2.go
recover3.go
recover4.go test: move allocation before munmap in recover4 2015-09-16 08:51:48 +00:00
recover.go test: add more cases to recover.go 2014-10-22 08:06:15 -07:00
rename1.go
rename.go
reorder2.go test: use go:noinline consistently 2015-11-03 02:01:34 +00:00
reorder.go
return.go
rotate0.go test: re-enable rotate tests 2015-05-28 19:40:58 +00:00
rotate1.go test: re-enable rotate tests 2015-05-28 19:40:58 +00:00
rotate2.go test: re-enable rotate tests 2015-05-28 19:40:58 +00:00
rotate3.go test: re-enable rotate tests 2015-05-28 19:40:58 +00:00
rotate.go
run.go runtime: fix x86 stack trace for call to heap memory 2015-07-13 19:42:35 +00:00
rune.go
runtime.go
shift1.go test: avoid "declared but not used" errors in shift1.go 2014-07-20 12:25:24 -07:00
shift2.go
sieve.go
sigchld.go
sigchld.out
simassign.go
sinit_run.go all: retire architecture letter in file names, public API 2015-05-21 17:32:17 +00:00
sinit.go cmd/compile: allow static init for unsafe.Pointer(&x) where x is global 2015-07-07 21:51:57 +00:00
sizeof.go
slice3.go cmd/gc, runtime: treat slices and strings like pointers in garbage collection 2014-08-25 14:38:19 -04:00
slice3err.go
slicecap.go cmd/gc, runtime: treat slices and strings like pointers in garbage collection 2014-08-25 14:38:19 -04:00
sliceopt.go cmd/internal/gc: optimize slice + write barrier 2015-05-13 19:20:39 +00:00
solitaire.go
stack.go
string_lit.go
stringrange.go
struct0.go
switch3.go
switch4.go
switch.go
tinyfin.go runtime: fix finalization and profiling of tiny allocations 2015-11-03 18:57:18 +00:00
torture.go cmd/8g: don't allocate a register early for cap(CHAN). 2014-07-01 09:20:51 +02:00
turing.go
typecheck.go
typecheckloop.go cmd/compile: convert typecheck_stack to []*Node 2015-09-06 23:50:51 +00:00
typeswitch1.go
typeswitch2.go
typeswitch3.go
typeswitch.go
undef.go
utf.go
varerr.go
varinit.go
writebarrier.go cmd/internal/gc: add missing write barrier in append(x, BigStructWithPointers) 2015-05-19 15:28:29 +00:00
zerodivide.go