Commit graph

2772 commits

Author SHA1 Message Date
Dale Weiler
629f6f1e63 Assembly statement parsing 2012-05-01 18:05:11 -04:00
Dale Weiler
d51718118a Function parsing for the assembler now works, and adds the function to the function table for the code writer, quake and darkplaces can see it as well (since a def is also created) 2012-05-01 16:42:11 -04:00
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