summaryrefslogtreecommitdiff
path: root/src/cmd/gc/go.h
AgeCommit message (Collapse)AuthorFilesLines
2009-08-04delayed evaluation of var blocksRuss Cox1-0/+1
R=ken OCL=32750 CL=32753
2009-08-04move select into its own file.Russ Cox1-0/+5
split into typecheck + walk R=ken OCL=32726 CL=32726
2009-08-04type checking of assignments, switch, if, forRuss Cox1-21/+2
R=ken OCL=32716 CL=32720
2009-08-03more 6g reorg; checkpoint.Russ Cox1-15/+19
typecheck.c is now responsible for all type checking except for assignment and function argument "..." R=ken OCL=32661 CL=32667
2009-07-31checkpoint; still plenty to clean upRuss Cox1-40/+69
R=ken OCL=32576 CL=32580
2009-07-30typechecking checkpoint.Russ Cox1-6/+7
started to move typechecking to another file. can build entire tree still, but lots of work is duplicated. much to clean up. R=ken OCL=32536 CL=32543
2009-07-29introduce typecheck pass before walkexpr.Russ Cox1-7/+17
not complete but compiler still works. R=ken OCL=32424 CL=32426
2009-07-29convert walkexpr to take Node**; drop indirRuss Cox1-4/+5
R=ken OCL=32421 CL=32421
2009-07-29expression printer; %#NRuss Cox1-0/+1
R=ken OCL=32419 CL=32419
2009-07-17another baby step.Russ Cox1-1/+1
excluding import data, no yacc node has type Type* anymore. 0 reduce/reduce conflicts. R=ken OCL=31793 CL=31795
2009-07-17baby step: const decls can refer to futureRuss Cox1-9/+16
consts in the same factored block const ( X = Y; Y = 2; ) R=ken OCL=31782 CL=31782
2009-07-17another step toward eliminating forward declarations.Russ Cox1-54/+66
introduce NodeList* type in compiler to replace OLIST. this clarifies where lists can and cannot occur. list append and concatenation are now cheap. the _r rules are gone from yacc. rev and unrev are gone. no more lists of lists. the representation of assignments is a bit clunkier. split into OAS (1=1) and OAS2 (2 or more on one side). delete dead chanrecv3 code. delay construction of func types. R=ken OCL=31745 CL=31762
2009-07-13step toward no function prototypes.Russ Cox1-1/+8
delay evaluation of most types (all but func) from parse time to type check time. R=ken OCL=31585 CL=31585
2009-07-10cleanup in preparation for new scoping.Russ Cox1-22/+20
walkstate -> walkstmt walktype -> walkexpr; stmts moved to walkstmt walktype and friends have a final Node **init argument that can have side effects appended, making it more explicit when they do and do not happen. this replaces the old global addtop and addtotop. delete switch map and interface conversion cases (dropped from the language months ago). R=ken OCL=31465 CL=31468
2009-07-07method expansion bugsRuss Cox1-0/+1
R=ken OCL=31310 CL=31310
2009-07-076g, 8g: generate data structures for new reflect interface (CL 31107)Russ Cox1-4/+7
R=ken OCL=31122 CL=31278
2009-07-06various 6g cleanup:Russ Cox1-5/+11
* give genwrapper and genembedtramp the same signature. * move duint8, duint16, duint32, duint64, duintptr into gc. * tidy genwrapper. * bug involving struct field symbols in signature list. (hash-order dependent so hard to trigger) * new Type print format %#-T like %#T but omits names on function arguments. R=ken OCL=31237 CL=31237
2009-06-25bug165Russ Cox1-0/+2
R=ken OCL=30783 CL=30783
2009-06-23fix a 6g crash after type errors.Russ Cox1-1/+2
do not bother warning about marks left on stack after syntax errors. leave OCONV nodes in tree to avoid type errors arising from multiple walks. R=ken OCL=30639 CL=30662
2009-06-06implement optional semicolons with help from the lexer,Russ Cox1-0/+5
instead of having to double the type and statement grammars. R=ken OCL=29987 CL=29998
2009-06-06gc: grammar cleanup:Russ Cox1-17/+17
* no longer distinguishes const, var, type, package names. * all the predefined names are not tokens anymore. R=ken OCL=29326 CL=29985
2009-06-02minor cleanup, 64-bit /= and %= on 32-bitRuss Cox1-0/+3
R=ken OCL=29806 CL=29808
2009-05-27clean up gmove:Russ Cox1-2/+6
* conversions all in one place. * no separate load, store phases; direct memory addressing when possible (this is the x86 after all!). avoids extra registers, extra MOVQs. * fixes int32 -> uint64 bug (was zero-extending) R=ken OCL=29482 CL=29484
2009-05-26bug 150Ken Thompson1-1/+0
R=r OCL=29405 CL=29405
2009-05-268g: hello world works againRuss Cox1-0/+1
* string format changed * files got renamed * new files that i forgot to check in last time updates are all copy and paste from 6g R=ken OCL=29385 CL=29400
2009-05-231. check for dups in complex literalsKen Thompson1-0/+1
structtype{a:1, a:2} maptypetype{"xx":1, "xx":2} arraytypetype{5:1, 5:2} 2. bug in registerization concerning alias of a struct and one of its elements 3. code optimization of struct.field (which exposed bug in 2) R=r OCL=29315 CL=29315
2009-05-21enforce channel directionRuss Cox1-3/+3
R=ken OCL=29209 CL=29216
2009-05-21added key:val extension toKen Thompson1-0/+7
structure and array literals R=r OCL=29190 CL=29190
2009-05-20ifaceop was being called with integersRuss Cox1-1/+4
that came from two different enums. spilt into ifacecvt and ifaceop depending on which enum the argument is. R=ken OCL=29122 CL=29122
2009-05-20change representation of interface values.Russ Cox1-0/+1
this is not a user-visible change. before, all interface values were struct Itype { Sigt *type; Sigi *inter; void *method[n]; } struct Iface { void *addr; Itype *itype; } the itype is basically a vtable, but it's unnecessary if the static type is interface{ }. for interface values with static type empty, the new representation is struct Eface { void *addr; Sigt *type; } this complicates the code somewhat, but it reduces the number of Itypes that have to be computed and cached, it opens up opportunities to avoid function calls in a few common cases, and it will make it possible to lay out interface{} values at compile time, which i think i'll need for the new reflection. R=ken OCL=28701 CL=29121
2009-05-18static initialization of slicesKen Thompson1-2/+4
R=r OCL=29016 CL=29016
2009-05-16static initializationKen Thompson1-1/+1
structure set up - no change yet R=r OCL=28966 CL=28966
2009-05-12no need for compiler to hard-code definition of runtime.Russ Cox1-1/+0
use the actual go source instead. R=r DELTA=90 (66 added, 18 deleted, 6 changed) OCL=28708 CL=28719
2009-05-086g:Russ Cox1-3/+6
new type equality restrictions better handling of renamed packages "sys" is no longer available to programs R=ken OCL=28553 CL=28578
2009-05-08move things out of sys into os and runtimeRuss Cox1-0/+1
R=r OCL=28569 CL=28573
2009-05-08eqtype(t1, t2, 0) => eqtype(t1, t2)Russ Cox1-1/+1
R=ken OCL=28559 CL=28562
2009-05-07if a struct s contains an anonymous interface valueRuss Cox1-0/+1
with method m, s.m() is ok and m now shows up in s's method set for interface runtime. see http://cl/28419-p2 for new test interface10.go. R=ken OCL=28420 CL=28423
2009-05-076g: error messagesRuss Cox1-0/+1
part 2; missing files R=ken OCL=28408 CL=28410
2009-05-066g: new interface rules (code got simpler!)Russ Cox1-6/+1
R=ken OCL=28374 CL=28378
2009-05-066g: generate string data as individual symbols,Russ Cox1-19/+1
so that 6l can discard strings used by dead code. also, for short strings, generate DUPOK global symbols so that references to, say, "%s: %s" in multiple files result in only a single symbol. R=ken OCL=28361 CL=28361
2009-04-09change representation of stringsKen Thompson1-12/+25
R=r OCL=27293 CL=27293
2009-04-08yet another attempt at auto-linkingRuss Cox1-1/+1
store only the original import path string (+ .a) if 6g resolves it to an archive file. let 6l re-resolve the .a at link time. this lets libraries build against an archive in the current directory but get used against an installed archive. R=r OCL=27244 CL=27244
2009-04-02use separate lex buf for better errors:Russ Cox1-0/+1
package main func main() { func(){}() + + } x.go:2: syntax error near _f001 becomes x.go:2: syntax error near func R=ken OCL=27047 CL=27047
2009-04-02implement some more 8gRuss Cox1-0/+1
package main func main() { println("hello,", 123); } R=ken OCL=27043 CL=27043
2009-03-30fix http://b/1748082Russ Cox1-1/+2
package main var f = func(a, b int) int { return a + b } R=ken OCL=26935 CL=26935
2009-03-30move portable object routines (especiallyRuss Cox1-3/+44
signature generation) into gc. R=ken OCL=26933 CL=26933
2009-03-30move portable code generation (basic statements) to gc.Russ Cox1-15/+64
R=ken OCL=26929 CL=26929
2009-03-30move some portable pieces of 6g/gsubr.c into gc/subr.cRuss Cox1-1/+32
int brcom(int); int brrev(int); void setmaxarg(Type*); Sig* lsort(Sig*, int(*)(Sig*, Sig*)); int dotoffset(Node*, int*, Node**); void stringpool(Node*); void tempname(Node*, Type*); R=ken OCL=26922 CL=26922
2009-03-30move alignment calculations into gcRuss Cox1-5/+38
R=ken OCL=26914 CL=26914
2009-03-30move bits.c from 6g to gcRuss Cox1-1/+38
R=ken OCL=26909 CL=26909