Commit graph

2470 commits

Author SHA1 Message Date
Wolfgang Bumiller
1e0a688bc5 ast_ternary - contrary to ast_ifthen neither ontrue nor onfalse can be NULL, and it does output a value 2012-05-01 17:02:45 +02:00
Wolfgang Bumiller
5fe87e6a20 if-then-else AST node - this one is not for ternary expressions 2012-05-01 16:55:02 +02:00
Wolfgang Bumiller
bb7c59c648 Remove 2 unused variables in create_binop - unused since create_general_instruction 2012-05-01 16:45:15 +02:00
Wolfgang Bumiller
22cf7e0a4d Fix missing 'int op;' in load_from_end, accidently removed it together with the other vars whil making it use general_instruction 2012-05-01 16:44:36 +02:00
Wolfgang Bumiller
8ab51544be Comment about the form of instruction general_instr is used for 2012-05-01 16:29:29 +02:00
Wolfgang Bumiller
cde5444f24 create_phi -> store_value, not store_local... phi output cannot be overwritten 2012-05-01 16:27:36 +02:00
Wolfgang Bumiller
0337320054 Reuse general_instr to shorten create_binop 2012-05-01 16:26:25 +02:00
Wolfgang Bumiller
3c07ed15c0 expose create_general_instr in ir.h for now... 2012-05-01 16:24:16 +02:00
Wolfgang Bumiller
282edea8de Get rid of duplicate code by adding an ir_block_create_general_instr 2012-05-01 16:23:45 +02:00
Wolfgang Bumiller
6ae8a69ab0 ir_block_create_fieldaddress - and fixing operand-numbering in load_from_ent 2012-05-01 16:20:44 +02:00
Wolfgang Bumiller
4fbcc57d49 Commenting on future lvalue use in ast_store 2012-05-01 15:15:19 +02:00
Wolfgang Bumiller
3a94e962ae codegen gets an lvalue flag now 2012-05-01 15:14:44 +02:00
Wolfgang Bumiller
4c165cbd07 ast_instantiate should check return value of mem_a and return NULL on error 2012-05-01 15:09:17 +02:00
Wolfgang Bumiller
281bd8657a ast_entfield node 2012-05-01 15:08:54 +02:00
Wolfgang Bumiller
eb21f1e733 alignment fix 2012-05-01 12:43:10 +02:00
Wolfgang Bumiller
45651cea8d Implementation of liferange overlap test 2012-05-01 12:40:37 +02:00
Wolfgang Bumiller
ddbd460331 Check for TYPE_FIELD in load_from_ent 2012-05-01 12:14:07 +02:00
Wolfgang Bumiller
18969b1713 style fix 2012-05-01 12:13:04 +02:00
Wolfgang Bumiller
4c38566877 ir_block_create_load_from_ent - long name, I know, but we need to be able to load from pointers too at some point... 2012-05-01 12:12:53 +02:00
Wolfgang Bumiller
5f0800bef6 support TYPE_FIELD in stores; storeP to do a different kind of type checking 2012-05-01 12:05:47 +02:00
Wolfgang Bumiller
340daeabc4 ir_block_create_storep for storing through pointers, the IR does not implicitly create conversions for now when using pointers, but it could 2012-05-01 11:58:52 +02:00
Dale Weiler
95152c1f5c VECTOR_PROT 2012-04-29 19:08:20 -04:00
Dale Weiler
f19cbe1400 Parse vector constants and add them to the constants table now for the assembler. 2012-04-29 19:03:06 -04:00
Dale Weiler
8156374a71 Invoke tests 2012-04-29 17:28:01 -04:00
Dale Weiler
453ca45176 added test_ast, test_ir, and test, as well as default, and all to the Makefile target list. Also made all tests C90 conformant code. 2012-04-29 16:54:41 -04:00
Dale Weiler
8c91adeb9f Merge branch 'master' into ast-and-ir 2012-04-29 16:39:43 -04:00
Dale Weiler
1db21393cf Remove Makefile_win (useless) 2012-04-29 16:38:38 -04:00
Wolfgang Bumiller
69d93409e5 params should be deleted, not unref()d 2012-04-29 19:45:14 +02:00
Dale Weiler
5d64001c36 64bit signed/unsigned integer support from the compiler if LONG_MAX != 0x7FFFFFFF 2012-04-29 12:09:30 -04:00
Dale Weiler
c3df4edebd Remove trailing whitespace 2012-04-28 19:03:16 -04:00
Wolfgang Bumiller
5751e41993 After moving ast_instantiate up, the checks which return NULL now must mem_d(self) 2012-04-29 00:41:35 +02:00
Dale Weiler
674ae4b7da Fix macro spacing 2012-04-28 18:56:44 -04:00
Dale Weiler
3e7a8c0e78 All code is now C89/C90 compat 2012-04-28 18:56:09 -04:00
Dale Weiler
206952b920 Merge branch 'master' into ast-and-ir 2012-04-28 16:45:02 -04:00
Dale Weiler
05966ee009 Remove trailing whitespace from everything 2012-04-28 16:43:39 -04:00
Dale Weiler
a5e1f40b85 gitattributes for whitespace 2012-04-28 16:40:03 -04:00
Dale Weiler
f697a5f999 lex.c -> lex_init s/lex->line = 0/lex->line = 1/ 2012-04-28 16:31:30 -04:00
Dale Weiler
37ff28a3b5 This should fix line counting issues with the lexer 2012-04-28 16:30:44 -04:00
Dale Weiler
7a81848d88 Lexer fixes 2012-04-28 16:25:43 -04:00
Wolfgang Bumiller
6dff77aa95 ast and ir testers - to use: compile into gmqcc and execut the functions in main() 2012-04-28 21:42:21 +02:00
Dale Weiler
bdb238b705 param_argument cleanup 2012-04-28 15:36:39 -04:00
Dale Weiler
1b13c86cc9 param_argument cleanup 2012-04-28 15:20:13 -04:00
Wolfgang Bumiller
488859a218 Do not force -[aci] parameters' arguments to be in the same argv; (Allow 'gmqcc -c foo' to act like 'gmqcc -cfoo' 2012-04-28 20:55:42 +02:00
Wolfgang Bumiller
2a9b3c7877 ast_function gets a handle to its ir_function, ast_global_codegen to generate an ir global, or an ir_function 2012-04-28 20:55:41 +02:00
Wolfgang Bumiller
eef92df092 First delete the blocks, THEN the locals, since blocks USE locals, darn 2012-04-28 20:55:41 +02:00
Wolfgang Bumiller
6145ecf7e0 ast_binary takes 2 expressions, not 2 values, ast_store takes a value and and expression for now until we support pointers, also: dropped the 'keep' param from ast_value_new, values are always to be stored somewhere to be deleted independently from their uses 2012-04-28 20:55:41 +02:00
Wolfgang Bumiller
0f38a560b6 ast_value and ast_function are linked together when using ast_function_new, note however, that neither will delete the other in their _delete functions. 2012-04-28 20:55:41 +02:00
Dale Weiler
df9a685f61 surpress empty bodies 2012-04-28 15:13:41 -04:00
Dale Weiler
7d66144c1b vector parsing for assembly 2012-04-28 07:27:03 -04:00
Wolfgang Bumiller
e4a839df95 Get rid of ast_setfunc 2012-04-28 12:51:44 +02:00