Wolfgang Bumiller
|
46752af74b
|
parser_const_string now uses hashtables; hashtables may want to dup an empty string without it becoming NULL - also replacing ir_strdup with the new util_ one
|
2013-04-17 18:23:30 +02:00 |
|
Dale Weiler
|
ccc2eb3298
|
More function flatening
|
2013-04-14 01:14:14 +00:00 |
|
Dale Weiler
|
c74889f648
|
Fix some memory leaks.
|
2013-04-13 18:01:26 +00:00 |
|
Wolfgang Bumiller
|
a32f59b256
|
hopefully fix an off-by-1 vararg copy issue
|
2013-02-26 16:39:28 +01:00 |
|
Dale Weiler
|
b1d1aabbdd
|
Remove debug printf
|
2013-02-25 08:52:56 +00:00 |
|
Dale Weiler
|
aebab8b68a
|
Push definitions when -O0
|
2013-02-25 08:52:17 +00:00 |
|
Wolfgang Bumiller
|
3e3b8993aa
|
Lifetime analysis: Don't go through the blocks as a graph, instead, go through only the list.
The difference in code is rather small, but it's much faster.
|
2013-02-11 11:39:44 +01:00 |
|
Dale Weiler
|
b9f46f4ef7
|
Not an assembler instruction, but virtual instruction used by the IR.
|
2013-01-30 06:31:24 +00:00 |
|
Dale Weiler
|
36c5722273
|
Rename
|
2013-01-30 05:35:07 +00:00 |
|
Dale Weiler
|
d201cfe6b4
|
Work in progress options cleanup.
|
2013-01-30 05:24:30 +00:00 |
|
Wolfgang Bumiller
|
9b51e7085b
|
In this situation the values don't need to be in parameter order; fix: call-stores putting values into wrong extparams
|
2013-01-25 16:25:23 +01:00 |
|
Wolfgang Bumiller
|
69e29c3ef8
|
debug extparam naming shouldn't start at 8, it's confusing, param 9 is now named extparam0
|
2013-01-25 15:37:09 +01:00 |
|
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 |
|