X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=doc%2Fgmqcc.1;h=9220e242eca811432d11e41b7f36fe8b2c956643;hp=60257dc444b9645fe100f213d000f2ca3412437e;hb=a68f0fcb355db42acabe72da5939fbd1b04f6016;hpb=b9fb29d740cb7e3711035fb37c604be61dd779bb diff --git a/doc/gmqcc.1 b/doc/gmqcc.1 index 60257dc..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 @@ -506,6 +512,24 @@ Example: 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 @@ -582,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