Commit graph

2799 commits

Author SHA1 Message Date
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