Dale Weiler
69252071ba
Prevent divide by zero for / and % operations in constant folding (previously caused compiler SIGFPE), instead "inf" is generated for both cases. This closes #124
2013-08-31 12:57:24 -04:00
Dale Weiler
9032e78349
There is no bug since the testsuite uses -o for preprocessed output (thus the printf never gets involved) if the testsuite read the preprocessor output from stdout than things would be wrong, since however it isn't there is no bug.
2013-08-31 09:53:19 -04:00
Wolfgang Bumiller
702a7664de
Don't allow a stale 'some_type;' declaration without an actual variable name; Same for typedef; closes #119
2013-08-31 11:35:12 +02:00
Wolfgang Bumiller
2ff9adecb2
this one can be reached - make it a little more helpful
2013-08-31 10:55:03 +02: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
Wolfgang Bumiller
79219ae201
factor check for assignment-to-constant into a function; improve its error output; closes #122
2013-08-31 10:39:31 +02:00
Wolfgang Bumiller
87b9fca732
fix unhelpful error message; fixes #123
2013-08-31 10:19:10 +02:00
Dale Weiler
98cb23ca63
Logic elsewhere handles this (no need to duplicate)
2013-08-30 07:23:15 -04:00
Dale Weiler
a50635bcd7
intrinsic folding cleanups (and improvements.)
2013-08-30 07:12:16 -04:00
Dale Weiler
76c37d9cc0
Rid of util_debug
2013-08-30 06:49:24 -04:00
Dale Weiler
c8b4eac618
Make -fshort-logic -funtyped-nil -fvariadic-args default for -std=gmqcc
2013-08-29 07:56:22 -04:00
Dale Weiler
f8af7adcd7
Remove &~= operator from gmqccs operator table, only fteqcc supports it.
2013-08-29 07:19:19 -04:00
Dale Weiler
dd289ed0e1
Merge branch 'cooking' of github.com:graphitemaster/gmqcc into cooking
2013-08-29 07:08:03 -04:00
Dale Weiler
3ed200d08a
Some changes changes
2013-08-29 07:07:43 -04:00
Wolfgang Bumiller
ff6d55aafc
this should allow for better detection of precedence issues
2013-08-29 10:22:48 +02:00
Wolfgang Bumiller
fa468e0673
also warn about mixing logical and/or operations without parenthesis
2013-08-29 08:26:17 +02:00
Wolfgang Bumiller
f140c39063
warn when mixing different bitops without parenthesis around them
2013-08-29 08:18:06 +02:00
Dale Weiler
51ef277e21
Fix folding logic for conditions.
2013-08-29 00:18:48 -04: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
ceb79f1897
Fix build on clang
2013-08-28 13:01:46 -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
Dale Weiler
bbe4927a20
Implemented a __builtin_fabs intrinsic.
2013-08-28 11:28:27 -04:00
Dale Weiler
ee428b9081
Fix fold-dce for if(0)
2013-08-28 10:39:48 -04:00
Wolfgang Bumiller
40bcec5044
Add missing -width to .Bl in doc/gmqpak.1
2013-08-28 14:40:23 +02:00
Wolfgang Bumiller
a80aa89e09
Fix bad use of .D1 in doc/qcvm.1
2013-08-28 14:38:51 +02:00
Wolfgang Bumiller
660a22d647
misc/check-doc.sh: run mandoc -Tlint -Wall on the manpages
2013-08-28 14:33:09 +02:00
Wolfgang Bumiller
494c30a239
allow initializing shadowed locals outside of -std=gmqcc - in this case it becomes a regular assignment to the old declaration which is consistent with fteqcc
2013-08-28 14:20:33 +02:00
Dale Weiler
71e7db63aa
Cleanups
2013-08-28 03:45:40 -04:00
Dale Weiler
8aaa268423
Handle return status from compiler, this fixes false positivies in the testsuite when the compiler segfaults and the testsuite still reports succeeded, now it won't hopefully.
2013-08-28 03:40:35 -04:00
Dale Weiler
a75746d610
Don't ignore empty newlines when match in the testsuite, instead only ignore when procedure type is -pp (i.e preprocessing).
2013-08-28 03:34:05 -04:00
Dale Weiler
045bd4dbda
Some style fixes for tests
2013-08-27 06:41:03 -04:00
Dale Weiler
28cd3a3f8f
Forgot this one
2013-08-27 06:39:51 -04:00
Dale Weiler
f21216ecad
A test for that xor stuff (the same one I used to cause the bug to manifest in the first place).
2013-08-27 06:35:58 -04:00
Rudolf Polzer
abfe98ce8a
Fix XOR maths for overlapping inputs by setting the lifetimes correctly.
...
Signed-off-by: Rudolf Polzer <divverent@xonotic.org>
2013-08-27 12:27:20 +02:00
Wolfgang Bumiller
988b4b4960
ast_binary->right_first and an execution order check
2013-08-27 10:42:13 +02:00
Dale Weiler
4937fa51c0
Merge divVerent/ftypeless-stores, but rid of the macro abuse.
2013-08-27 04:28:22 -04:00
Dale Weiler
1b3d515777
Merge branch 'cooking' of github.com:graphitemaster/gmqcc into cooking
2013-08-27 04:28:11 -04: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
581d0dfc15
Merge branch 'divVerent/ftypeless-stores' of git://git.xonotic.org/xonotic/gmqcc into cooking
2013-08-27 04:07:17 -04:00
Wolfgang Bumiller
147a6df629
fix testcase workarounds
2013-08-27 10:00:24 +02:00
Dale Weiler
b3c1b46925
And there she goes, them space swallowing whores.
2013-08-27 03:57:09 -04:00
Rudolf Polzer
f4f805f4c9
New options: -ftypeless-stores and -fsort-operands
...
These flags reduce entropy, but not size, of the generated assembly
code. This helps compressability of the files.
Additionally, -ftypeless-stores might SLIGHTLY improve engine
performance due to less instructions being used (so branch prediction
might work better). Probably cannot be measured though.
Signed-off-by: Rudolf Polzer <divverent@xonotic.org>
2013-08-27 09:55:00 +02:00
Dale Weiler
fc57fa4064
Add support for columns to LNOF files.
2013-08-26 14:14:33 -04:00
Dale Weiler
0e077c6e42
Fix testsuite for when a process crashes (do not consider it a success)
2013-08-26 13:10:38 -04:00
Dale Weiler
a1f1ec6d65
Fix testsuite
2013-08-26 13:05:54 -04:00
Wolfgang Bumiller
ba94df47f0
reset the column counter on a newline
2013-08-26 18:53:09 +02:00
Dale Weiler
454234ef5f
Merge branch 'divVerent/submit/vector-bitops' of git://git.xonotic.org/xonotic/gmqcc into cooking
2013-08-26 12:36:17 -04:00
Rudolf Polzer
e50b7a2719
Support vector bitor/bitand/bitxor.
...
Signed-off-by: Rudolf Polzer <divverent@xonotic.org>
2013-08-26 18:32:28 +02:00
Wolfgang Bumiller
5958687795
error when trying to pass a TYPE_NOEXPR value to ir_instr_op
2013-08-26 10:23:20 +02:00