Commit graph

2330 commits

Author SHA1 Message Date
Wolfgang (Blub) Bumiller
13082112b0 create the ir_function in ast_function_codegen, keep the current ir_block stored in ast_function so inner codegens can use it 2012-05-02 19:25:25 +02:00
Wolfgang (Blub) Bumiller
1e9d02da14 going through function blocks in ast_function_codegen 2012-05-02 19:21:25 +02:00
Wolfgang (Blub) Bumiller
314d45ff82 ast_local/global_codegen exposed through the header for now 2012-05-02 18:36:11 +02:00
Wolfgang (Blub) Bumiller
92a4431c86 ast_local_codegen - similar structure to global_codegen obviously... 2012-05-02 18:34:24 +02:00
Wolfgang (Blub) Bumiller
7a48377442 for ast_value_codegen this should be enough, since the actual generation happens in other functions 2012-05-02 18:25:59 +02:00
Dale Weiler
bc318bb68e More function parsing for assembler 2012-05-02 11:48:46 -04:00
Dale Weiler
ca7ab3fd5f assembly statement operand parsing. Now all we need is tables and state to generate some valid code. 2012-05-01 20:36:37 -04:00
Dale Weiler
eaaa1d15d8 test.qs update 2012-05-01 18:05:41 -04:00
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