Dale Weiler
|
87a43777ab
|
strength reduct (a - (-b)) into (a + b)
|
2013-11-23 13:13:21 -05:00 |
|
Wolfgang Bumiller
|
065a870e7a
|
build again
|
2013-10-23 14:04:20 +02:00 |
|
Wolfgang Bumiller
|
b87eb89853
|
This is not allowed
|
2013-10-23 14:01:56 +02:00 |
|
Wolfgang Bumiller
|
8d5e719026
|
replacing the current [[accumulate]] implementation: shorter and simpler, and also supports non-void return types
|
2013-10-18 11:26:41 +02:00 |
|
Dale Weiler
|
97217b55d1
|
Ignore generating a return instruction in accumulated functions, eventually we'll have a way to merge these into one function but for now the RETURN is a waste.
|
2013-10-17 04:45:24 -04:00 |
|
Dale Weiler
|
2c975bb344
|
Implemented [[accumulate]] attribute. This will hopefully be used by Xonotic to replace it's ACCUMULATE_FUNCTION stuff.
|
2013-10-17 03:21:30 -04:00 |
|
Dale Weiler
|
c8413a9a04
|
Clang is so anal
|
2013-10-14 21:03:24 -04:00 |
|
Dale Weiler
|
8e8b3608fb
|
Cleanups
|
2013-10-14 20:58:36 -04:00 |
|
Dale Weiler
|
a02e44100e
|
Fix some things: get all the Quake mods to compile again (I broke binary expressions .. oops) Fix the check-proj script, using $? for status was invalid because of pipes. The ir now properly considers negation virtual instruction to be operations (as it should).
|
2013-10-05 23:36:48 -04:00 |
|
Dale Weiler
|
ffdd6df828
|
Only when peephole optimization is on
|
2013-10-04 07:02:06 -04:00 |
|
Dale Weiler
|
2cf5046d38
|
Handle proper expression type assignment
|
2013-10-04 06:53:09 -04:00 |
|
Dale Weiler
|
cc69370575
|
Another peephole optimization which removes superfluous expressions such as (A + 0), (A - 0), (A * 1) and (A / 1).
|
2013-10-04 06:46:54 -04:00 |
|
Dale Weiler
|
b6f08e7fb1
|
Fix negation type for VINSTR_NEG_V. Source operand for optimization instead of the expression (to handle double negation elision properly.)
|
2013-09-30 14:32:21 -04:00 |
|
Dale Weiler
|
03b56bd41f
|
Handle double negation case specially. Update TODO
|
2013-09-30 05:12:28 -04:00 |
|
Dale Weiler
|
b10de1b240
|
Make unary - operator act as an ast_unary node. This allows for consistency (no sense in making unary use binstore nodes, it doesn't make much sense). It also allows for the peephole optimization on unary chains that cancel each other to take place; i.e code like "-(-a)" simplifies to "a", thus eliminating instructions.
|
2013-09-29 22:01:46 -04:00 |
|
Dale Weiler
|
3c931ecbf1
|
Eh, only if peephole optimizations are turned on.
|
2013-09-28 06:41:40 -04:00 |
|
Dale Weiler
|
c6056d441b
|
Less casts.
|
2013-09-28 06:36:00 -04:00 |
|
Dale Weiler
|
7c25af973c
|
It was much easier in the AST, really.
|
2013-09-28 06:33:15 -04:00 |
|
Dale Weiler
|
15b0555546
|
Implement constant folding on ternary operations via fold_cond.
|
2013-09-26 06:51:49 -04:00 |
|
Wolfgang Bumiller
|
4600f1d7ff
|
more thorough check for whether an ast node starts a new label; closes #121
|
2013-08-31 10:48:24 +02:00 |
|
Dale Weiler
|
a7c1f6f021
|
Implement [[eraseable]] attribute. When used with a function it instructs the AST (which than transfers logic to the IR) that the function (or variable) is potentially unused (verified by checking the read count). This than propogates through the IR and prevents the IR from generating both the definition and global/function. The intrinsics system uses this as well to prevent intrinsic functions from being generated unless they're used.
|
2013-08-29 00:05:37 -04:00 |
|
Dale Weiler
|
3b4a5667ea
|
Constant fold intrinsics if their arguments are constant. TODO: reference count intrinsics such that they're not generated unless they're used, currently when an intrinsic can be folded-away it's marked for generation and makes it to the final output binary even though it isn't used.
|
2013-08-28 12:46:22 -04:00 |
|
Wolfgang Bumiller
|
988b4b4960
|
ast_binary->right_first and an execution order check
|
2013-08-27 10:42:13 +02:00 |
|
Wolfgang Bumiller
|
b26f53125d
|
error on uninitialized arrays of unspecified size; otherwise it errors about a size overflow
|
2013-08-27 10:19:05 +02:00 |
|
Wolfgang Bumiller
|
844e84fc16
|
bail out when encountering an invalid array size in the ast as it's likely to cause breakage when trying to generate them anyway
|
2013-08-27 10:09:31 +02:00 |
|
Dale Weiler
|
c64005966f
|
Remove some trailing whitespace
|
2013-08-17 23:43:41 +00:00 |
|
Dale Weiler
|
24fc2e5146
|
Fix that typecast
|
2013-07-31 19:36:09 +00:00 |
|
Dale Weiler
|
10b75fd8b9
|
Move const-branch-elision into fold.c
|
2013-07-31 19:34:38 +00:00 |
|
Dale Weiler
|
d8b931fbcf
|
Experimental/Initial try at in-ast constant folding. (for TYPE_FLOAT currently .. since comparisions on UTF8 strings need to be worked out yet ..)
|
2013-07-30 18:06:42 +00:00 |
|
Dale Weiler
|
d6ca5673dc
|
Use the _t consistency naming scheme. Also various cleanups.
|
2013-07-30 16:00:51 +00:00 |
|
Dale Weiler
|
c8c25ef6f7
|
Some cleanups and smaller binaries!
|
2013-07-28 00:23:15 +00:00 |
|
Dale Weiler
|
c7679722fb
|
Please the whitespace gods
|
2013-07-27 11:48:55 +00:00 |
|
Dale Weiler
|
bbffdde2dc
|
Fix some bugs and a memleak in the testsuite.
|
2013-06-22 01:56:22 +00:00 |
|
Dale Weiler
|
063c50fce4
|
More bug fixes and dead code elimination
|
2013-06-22 01:23:59 +00:00 |
|
Dale Weiler
|
ce23e95d0b
|
Remove a ton of dead code and document the one really insane case.
|
2013-06-21 23:40:51 +00:00 |
|
Dale Weiler
|
fe296de42f
|
Fix more bugs (mostly possible NULL pointer dereferences)
|
2013-06-21 23:26:49 +00:00 |
|
Dale Weiler
|
996d998ebb
|
Fix possible NULL pointer dereference
|
2013-06-21 23:21:12 +00:00 |
|
Wolfgang Bumiller
|
290d065a79
|
again with the comments...
|
2013-06-15 09:49:15 +02:00 |
|
Wolfgang Bumiller
|
3fab06941a
|
fix a call typecheck issue
|
2013-06-15 09:46:44 +02:00 |
|
Wolfgang Bumiller
|
179da9241c
|
working on vararg piping: detecting several error cases, adding -Wunsafe-types and -funsafe-varargs
|
2013-06-15 09:46:44 +02:00 |
|
Wolfgang Bumiller
|
8ce331b563
|
allow array size to be inferred from the initializer
|
2013-06-12 15:47:11 +02:00 |
|
Wolfgang Bumiller
|
dc91918c1f
|
error about too many elements in initializer; added test for initialized arrays: arrays2.tmpl/qc
|
2013-06-12 14:41:38 +02:00 |
|
Wolfgang Bumiller
|
bc4a66e9f7
|
setting initializing values
|
2013-06-12 14:32:34 +02:00 |
|
Dale Weiler
|
11179a2a71
|
Major header reworking, this respects the namespaces properly. Makes object dependency more obvious, allows for better make caches, and prevents misuse of library features, i.e use con_* instead of printf.
|
2013-06-04 02:47:07 +00:00 |
|
Wolfgang Bumiller
|
ba781c53ef
|
now a bare 'return;' is not required anymore if return has been assigned anywhere
|
2013-05-29 17:08:03 +02:00 |
|
Wolfgang Bumiller
|
9167de1631
|
fixing that comment...
|
2013-05-29 16:56:39 +02:00 |
|
Wolfgang Bumiller
|
afdc0c9dc8
|
assignable return value now lives in ast_function, as globals can get overwritten randomly; removed parser_find_retval; updated parse_return
|
2013-05-29 16:51:59 +02:00 |
|
Dale Weiler
|
db6ca6c5f8
|
Make static
|
2013-05-29 11:32:42 +00:00 |
|
Dale Weiler
|
6d6a2efada
|
Experimental support for implicit return assignments. This closes #107. To enable return assignment support use -freturn-assignments. This allows you to do the following in QC code. T name() { return = expr_eval_T; return; /* returns expr_eval_T */ }. It allows for concise code and to rid locals in functions. It also saves a tremendous amount of space since only types of certian globals need to be allocated for returns.
|
2013-05-29 11:13:42 +00:00 |
|
Dale Weiler
|
2923b718e1
|
Merge branch 'union-replacement' into cooking
Conflicts:
ast.c
|
2013-05-29 03:43:49 +00:00 |
|