Commit graph

250 commits

Author SHA1 Message Date
Dale Weiler
c3964cf29d Make compiler and virtual-machine compile as C++ code, also removed gmqcc_voidptr hack. 2012-12-23 07:51:19 +00:00
Wolfgang Bumiller
43cf6e7cba -Opeephole now also reduces CALL stores 2012-12-21 11:42:23 +01:00
Wolfgang Bumiller
48ba6a6189 Rename ir_function_pass_tailcall->tailrecursion; Take -fadjust-vector-fields into account when storing field type return-values from functions 2012-12-21 11:33:44 +01:00
Wolfgang Bumiller
0bbc8a3350 Remove old tempalloc code; disable -Olocaltemps for now 2012-12-20 23:52:54 +01:00
Wolfgang Bumiller
e38bdecd21 Be more correct with sizes; use a better local-alloc strategy 2012-12-20 23:48:41 +01:00
Wolfgang Bumiller
1d3fdea432 Fix util_endianswap; and endianswap the LNO data as well 2012-12-20 22:03:51 +01:00
Wolfgang Bumiller
b595ec03f8 fix a leak in the local-allocator 2012-12-20 20:26:54 +01:00
Wolfgang Bumiller
915c002be4 Temporarily fix noreturn bug by creating an actual dummy return instruction after the call for now 2012-12-20 16:20:08 +01:00
Wolfgang Bumiller
3119a95a89 -fallow-unreachable-code 2012-12-20 14:41:16 +01:00
Wolfgang Bumiller
a274f8ec07 making the uninitialized-var on vector warning now check all members; ir_value_vector_member now also appends _x,_y,_z since they're used in the used-unintialized message 2012-12-20 14:06:25 +01:00
Dale Weiler
0648835061 handle cygwin/mingw for makefile 2012-12-20 00:22:22 +00:00
Wolfgang (Blub) Bumiller
afaa162aa1 Applying the actual 'Fix FTFBS stuff' part 2012-12-19 22:17:22 +01:00
Wolfgang (Blub) Bumiller
57aaf57dfc Revert "Fix FTFBS stuff"
This reverts commit 2cc51b8eb0.
2012-12-19 22:15:38 +01:00
Dale Weiler
2cc51b8eb0 Fix FTFBS stuff 2012-12-19 21:05:40 +00:00
Wolfgang (Blub) Bumiller
7c5fc26081 NRCALL now sets block->final and block->is_return 2012-12-19 20:40:45 +01:00
Wolfgang (Blub) Bumiller
bf267d0238 ir_block_create_{phi,call} now check self->final 2012-12-19 20:39:44 +01:00
Wolfgang (Blub) Bumiller
384446316a VINSTR_NRCALL, translated like any other call for now; to be used to mark a call which never returns, ie the error builtin 2012-12-19 20:38:32 +01:00
Rudolf Polzer
acf4da9385 Fixes for some minor bugs clang-analyzer and cppcheck found
Signed-off-by: Dale Weiler <killfieldengine@gmail.com>
2012-12-18 16:54:51 +00:00
Wolfgang (Blub) Bumiller
dccafd65ac More jump removal 2012-12-18 14:03:20 +01:00
Wolfgang (Blub) Bumiller
19deac0707 *sigh* 2012-12-18 13:13:54 +01:00
Wolfgang (Blub) Bumiller
66e6e6329f vector components are floats, not vectors 2012-12-18 12:58:15 +01:00
Wolfgang (Blub) Bumiller
d9cca87aff Don't generate IF/IFNOT with +1 offsets 2012-12-18 12:57:09 +01:00
Wolfgang (Blub) Bumiller
d09ab90f24 -fsingle-vector-defs to disable _x,_y,_z generation 2012-12-18 12:47:48 +01:00
Wolfgang (Blub) Bumiller
116d744823 Generate _x,_y,_z defs/fields 2012-12-18 12:41:38 +01:00
Wolfgang (Blub) Bumiller
db5484bdef DEF_SAVEGLOBAL flag is now applied on initialized non-constant globals, and is not applied on 'consts' 2012-12-18 12:02:33 +01:00
Wolfgang (Blub) Bumiller
6b4c89700b Don't generate 'jump +1' instructions 2012-12-18 11:57:30 +01:00
Wolfgang (Blub) Bumiller
83a41d13c0 Don't generate AINSTR_END anymore, use INSTR_DONE 2012-12-18 11:46:26 +01:00
Dale Weiler
4b3e2571af Cleanups of compiler option configuration. Added ini/cfg parser system as well. 2012-12-18 04:57:17 +00:00
Wolfgang (Blub) Bumiller
2534076963 irwarning to use vcompile_warning 2012-12-17 18:25:06 +01:00
Wolfgang (Blub) Bumiller
c198c23df1 Another peephole optimization 2012-12-06 22:10:31 +01:00
Wolfgang (Blub) Bumiller
8858f265dd s/ir_function_pass_minor/ir_function_pass_peephole/ 2012-12-06 21:39:34 +01:00
Wolfgang (Blub) Bumiller
9c5b95bbe3 Temporarily disable the new tempalloc strat 2012-12-06 17:41:00 +01:00
Wolfgang (Blub) Bumiller
f9b1d057b5 Moving all the global opts_ variables into a struct, now there's one global 'opts' struct 2012-12-06 13:23:53 +01:00
Wolfgang (Blub) Bumiller
94560d1873 -Ominor -> -Opeephole; added -Olocaltemps flag; using a less space-wasting temp-allocation in general 2012-12-06 13:08:46 +01:00
Wolfgang (Blub) Bumiller
37fbe7176f Tiny codegen optimization: silently ignore the creation of STORE with input and output being the same address 2012-12-05 15:17:11 +01:00
Wolfgang (Blub) Bumiller
8acfd87039 remember this for later 2012-12-05 15:14:21 +01:00
Wolfgang (Blub) Bumiller
fe150aee72 ir_function_pass_minor: some minor optimizations 2012-12-05 14:14:35 +01:00
Wolfgang (Blub) Bumiller
8e077f378e -Werror now changes the word 'warning' into 'error' 2012-12-04 12:54:53 +01:00
Wolfgang (Blub) Bumiller
c371efb882 Fix a type size bug: non-var locals overlapped with var locals, that was bad 2012-12-01 23:23:00 +01:00
Wolfgang (Blub) Bumiller
624e95ee03 Generate extparams on calls too since the to-be-called function needs not be generated first after all 2012-12-01 11:43:54 +01:00
Wolfgang (Blub) Bumiller
43c0343755 Offsetting builtins so we can use 'if builtin!=0' as condition but also allow a '#0' builtin 2012-12-01 00:36:24 +01:00
Wolfgang (Blub) Bumiller
2a2465c884 prepare fields before generating globals so we avoid the need for relocating initialized fieldpointers 2012-11-30 21:22:48 +01:00
Wolfgang (Blub) Bumiller
e0a7f8a484 qcvm -printfuns; prog_section_function.nargs is now signed as fteqcc sets builtins with varargs to have -1 params 2012-11-30 20:20:13 +01:00
Wolfgang (Blub) Bumiller
6fc00e523d All ir_instrs now get their lex-context, so that we can create an LNO file with -flno 2012-11-30 18:20:02 +01:00
Wolfgang (Blub) Bumiller
600ecda860 Set the full const/var qualifier; only generate warnings about unimplemented functions if they have no qualifier at all 2012-11-30 14:05:25 +01:00
Wolfgang (Blub) Bumiller
5e23e8296d don't just store a 'bool constant' in the ast/ir, store the complete qualifier: 'int cvq', moved CV_ defines into gmqcc.h 2012-11-30 13:47:28 +01:00
Wolfgang (Blub) Bumiller
2ec0a96a21 Fix a wrong vec_remove in the tailcall pass 2012-11-30 11:59:03 +01:00
Wolfgang (Blub) Bumiller
e1fe6cff54 Importing tail-recursion optimization 2012-11-30 11:12:53 +01:00
Wolfgang (Blub) Bumiller
23e0637e85 ir_function_create_block now takes a lex_ctx instead of copying from the function; ast_ternary: need to remember the _end_ block of the 2 expressions because that's where the jump is actually supposed to be 2012-11-25 23:48:29 +01:00
Wolfgang (Blub) Bumiller
18b27d5cf6 use the hashtables in the IR 2012-11-25 13:37:54 +01:00