Wolfgang Bumiller
|
81f3a6d186
|
fix an off-by-one bug when copying varargs
|
2013-01-16 21:04:08 +01:00 |
|
Wolfgang Bumiller
|
f8f4ad8ee5
|
a tiny speedup, seems like -O2 doesn't do that by itself
|
2013-01-15 20:57:30 +01:00 |
|
Wolfgang Bumiller
|
b311cd6163
|
that tempbool should have gone long ago...
|
2013-01-15 20:27:23 +01:00 |
|
Wolfgang Bumiller
|
d12e6e15c9
|
-flegacy-vector-maths, enabled by default
|
2013-01-14 11:15:06 +01:00 |
|
Wolfgang Bumiller
|
bec05f1bbb
|
apparently it's possible to segfault DP with a bad INSTR_LOAD_V - so the IR should not allow this
|
2013-01-13 21:00:13 +01:00 |
|
Wolfgang Bumiller
|
7fc88cfe5b
|
fix a build issue
|
2013-01-12 16:38:49 +01:00 |
|
Wolfgang Bumiller
|
47db74c699
|
this is useless and just confused me a lot, removing
|
2013-01-12 16:20:31 +01:00 |
|
Wolfgang Bumiller
|
cd543aad5e
|
added gen_function_varargs_copy
|
2013-01-12 14:48:56 +01:00 |
|
Wolfgang Bumiller
|
e8b5ad6625
|
mask -Olocal-temps by IR_FLAG_MASK_NO_LOCAL_TEMPS which now equals IR_FLAG_MASK_NO_OVERLAP - though HAS_ARRAYS usually suffices, but not for code which _depends_ on uninitialized variables
|
2013-01-12 14:03:54 +01:00 |
|
Wolfgang Bumiller
|
2a4ea74a97
|
ir_function stores max_varargs now
|
2013-01-12 14:01:16 +01:00 |
|
Wolfgang Bumiller
|
973122ed9b
|
ast_call now has a va_count which causes a store to reserved:va_count before the call
|
2013-01-12 13:29:47 +01:00 |
|
Wolfgang Bumiller
|
6df3c625b0
|
Added a flag to both ast and ir which enforces the generation of a globaldef for a value
|
2013-01-11 19:15:59 +01:00 |
|
Wolfgang Bumiller
|
f06a59e3c7
|
Fix a warning
|
2013-01-10 16:04:58 +01:00 |
|
Wolfgang Bumiller
|
9eefe90d78
|
removing a goto loop
|
2013-01-09 16:00:16 +01:00 |
|
Wolfgang Bumiller
|
a76ae11241
|
more IR dump verbosity; fix: MUL_VF/FV additional liferange must be propagated to the full vector when using a vector-member as float-parameter
|
2013-01-08 21:21:52 +01:00 |
|
Wolfgang Bumiller
|
d6809ed331
|
better solution to blockstart pointlife issues
|
2013-01-08 15:22:24 +01:00 |
|
Wolfgang Bumiller
|
ae97ff7a80
|
This should fix the -Olocal-temps issue; set v->unique_life for any v with a point-life - this is a bad solution: proper dead code elimination should be done instead
|
2013-01-07 14:55:05 +01:00 |
|
Wolfgang Bumiller
|
63e5bc91de
|
more info in the IR dump
|
2013-01-07 14:55:05 +01:00 |
|
Wolfgang Bumiller
|
99249c8fa3
|
Guard 2 peephole optimizations which should only work on the currently-last instruction by a check if it's actually really at the end...
|
2013-01-07 00:22:54 +01:00 |
|
Wolfgang Bumiller
|
ae09831227
|
Introducing TYPE_NOEXPR so that these undefined labels cannot be used on the expression side of goto ternary expressions; ast_label now is TYPE_NOEXPR; we may consider setting ast_ifthen to that too unless we want ifthen to return a value...
|
2013-01-03 12:49:21 +01:00 |
|
Dale Weiler
|
29db4a44ed
|
Happy new years!
|
2013-01-01 05:08:55 +00:00 |
|
Wolfgang Bumiller
|
2b1eaa6df3
|
Actually allocate a nil-vector for nil
|
2012-12-31 13:25:18 +01:00 |
|
Wolfgang Bumiller
|
0c673dfebb
|
fix store op for nil as parameter
|
2012-12-31 13:19:34 +01:00 |
|
Wolfgang Bumiller
|
26d43e650f
|
Adding some more internal-error messages where they were missing; fixed ast_ternary_codegen to use the ast_node's type instead of the ir generated ones to avoid erroring on TYPE_NIL
|
2012-12-31 12:08:47 +01:00 |
|
Wolfgang Bumiller
|
73bc4cc3e4
|
-Ovector-components
|
2012-12-29 15:05:04 +01:00 |
|
Wolfgang Bumiller
|
40b2a26e89
|
TYPE_NIL, builder->nil, ast_value_codegen for TYPE_NIL
|
2012-12-28 18:05:28 +01:00 |
|
Dale Weiler
|
cb12460b95
|
Fix another Blub bug .. learn to use comments properly :P
|
2012-12-28 12:54:20 +00:00 |
|
Wolfgang Bumiller
|
24f3098418
|
fix: when there are no additional temps the first one allocated slot's size was counted twice resulting in some additional unused globals
|
2012-12-27 11:46:08 +01:00 |
|
Wolfgang Bumiller
|
d4483bfda6
|
-Oglobal-temps
|
2012-12-26 23:18:45 +01:00 |
|
Wolfgang Bumiller
|
1cca992a8e
|
factoring out temp-slot-assignment and using it for the declared locals too, makes -Olocal-temps more effective
|
2012-12-26 22:09:54 +01:00 |
|
Wolfgang Bumiller
|
de3d8747f7
|
fix uninitialized warnings in ir.c
|
2012-12-26 20:07:57 +01:00 |
|
Wolfgang Bumiller
|
700628b2cb
|
counters for -Ocall-stores because we all love numbers
|
2012-12-26 19:11:26 +01:00 |
|
Wolfgang Bumiller
|
14889897da
|
Don't copy return values away from OFS_RETURN if they don't get locked.
|
2012-12-26 18:33:16 +01:00 |
|
Wolfgang Bumiller
|
af5b552a7f
|
-Ovoid-return - the last INSTR_RETURN of a void functions is replaced by INSTR_DONE to reduce the instruction count
|
2012-12-26 10:24:33 +01:00 |
|
Wolfgang Bumiller
|
aee7bf0de0
|
Actually generate the vector member ir_values in ir_function_finalize, since ir_builder_gen_global is too late / happens after life ranges; this should fix -Ooverlap-locals
|
2012-12-25 23:51:29 +01:00 |
|
Wolfgang Bumiller
|
a7c3ef3e22
|
-Ocall-stores as part of -O1: instead of having CALL instructions issue STOREs for every parameter, use the newly introduced 'lock' flag to make the operations generating the call's parameters generate them right into the OFS_PARM if there's no interfering CALL in between
|
2012-12-25 23:25:59 +01:00 |
|
Wolfgang Bumiller
|
d7de5cb5ff
|
do the locking before processing the call-reads otherwise all the call's parameters get locked as well
|
2012-12-25 23:24:31 +01:00 |
|
Wolfgang Bumiller
|
710f580e15
|
liferange calc now sets the 'locked' flag on values when reaching a CALL
|
2012-12-25 21:03:26 +01:00 |
|
Wolfgang Bumiller
|
307746dc35
|
Ensure that the members[] array is filled for vector types so the liferange function can use all of them
|
2012-12-24 12:52:15 +01:00 |
|
Wolfgang Bumiller
|
dc691c8a6e
|
Now this should deal with vector life ranges more correctly.
|
2012-12-24 12:43:05 +01:00 |
|
Wolfgang Bumiller
|
2d66431af4
|
-q, --quiet option
|
2012-12-24 10:53:51 +01:00 |
|
Wolfgang Bumiller
|
6a93b72ea5
|
-Ostrip-constant-names
|
2012-12-23 22:58:46 +01:00 |
|
Wolfgang Bumiller
|
6a60368a1b
|
-Olocaltemps -> -Olocal-temps for consistency; added manpage entry; removed leftover manpage entry for -foverlap-locals; -Olocal-temps moved from -O1 to -O3 due to stability concerns
|
2012-12-23 21:39:23 +01:00 |
|
Wolfgang Bumiller
|
1ac913877e
|
revert 3ef30e850d
|
2012-12-23 21:34:04 +01:00 |
|
Wolfgang Bumiller
|
63928e231c
|
Remove ir_block_create_{add,sub,mul,div}, they're not used; STOREP instructions don't themselves to their target pointer's 'writes' list, but 'reads' list instead
|
2012-12-23 21:29:15 +01:00 |
|
Wolfgang Bumiller
|
435dee935b
|
Start instruction numbering at 1 and make parameters live at 0
|
2012-12-23 21:20:16 +01:00 |
|
Wolfgang Bumiller
|
3ef30e850d
|
Don't store off CALL results if they're never read
|
2012-12-23 21:11:56 +01:00 |
|
Wolfgang Bumiller
|
fb5a65c51a
|
Life Ranges: First deal with all writes, then with all reads, since writes will remove values from the Living set
|
2012-12-23 20:50:21 +01:00 |
|
Wolfgang Bumiller
|
3c9283cc41
|
don't optimize out NOT_S instructions for COND
|
2012-12-23 17:51:01 +01:00 |
|
Wolfgang Bumiller
|
c91b457054
|
Mask overlap-locals by -Ooverlap-locals, and count (the amount of overlapped functions)
|
2012-12-23 17:40:56 +01:00 |
|