X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=doc%2Fgmqcc.1;h=9220e242eca811432d11e41b7f36fe8b2c956643;hp=56728d17588c4f432180f7bd1769faa784d160ec;hb=a68f0fcb355db42acabe72da5939fbd1b04f6016;hpb=1a915c7bf71fbcef0b7eeadba5e224a5886ea429 diff --git a/doc/gmqcc.1 b/doc/gmqcc.1 index 56728d1..9220e24 100644 --- a/doc/gmqcc.1 +++ b/doc/gmqcc.1 @@ -320,6 +320,12 @@ marked as such. Warn about possible mistakes caused by missing or wrong parenthesis, like an assignment in an 'if' condition when there's no additional set of parens around the assignment. +.It Fl W Ns Cm unsafe-types +When passing variadic parameters via +.Li ...(N) +it can happen that incompatible types are passed to functions. This +enables several warnings when static typechecking cannot guarantee +consistent behavior. .El .Sh COMPILE FLAGS .Bl -tag -width Ds @@ -497,6 +503,33 @@ void vafunc(string...count) { Most Quake VMs, including the one from FTEQW or up till recently Darkplaces, do not cope well with vector instructions with overlapping input and output. This option will avoid producing such code. +.It Fl f Ns Cm expressions-for-builtins +Usually builtin-numbers are just immediate constants. With this flag +expressions can be used, as long as they are compile-time constant. +.Pp +Example: +.Bd -literal -offset indent +void printA() = #1; // the usual way +void printB() = #2-1; // with a constant expression +.Ed +.It Fl f Ns Cm return-assignments +Enabiling this option will allow assigning values or expressions to the +return keyword as if it were a local variable of the same type as the +function's signature's return type. +.Pp +Example: +.Bd -literal -offset indent +float bar() { return 1024; } +float fun() { + return = bar(); + return; // returns value of bar +} +.Ed +.It Fl f Ns Cm unsafe-varargs +When passing on varargs to a different functions, this turns some +static error cases into warnings. Like when the caller's varargs are +restricted to a different type than the callee's parameter. Or a list +of unrestricted varargs is passed into restricted varargs. .El .Sh OPTIMIZATIONS .Bl -tag -width Ds @@ -573,6 +606,10 @@ in this case, the y component of a vector. This optimization will turn such a multiplication into a direct component access. If the factor is anything other than 1, a float-multiplication will be added, which is still faster than a vector multiplication. +.It Fl O Ns Cm const-fold-dce +For constant expressions that result in dead code (such as a branch whos +condition can be evaluated at compile-time), this will eliminate the branch +and else body (if present) to produce more optimal code. .El .Sh CONFIG The configuration file is similar to regular .ini files. Comments