X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=doc%2Fgmqcc.1;h=6ede944f1ffb68be44140899140e0ae7ba1e8439;hb=9f2b9e1b46c583d12796df8741bd9b448397b8cb;hp=da79a5bd0415b15165c7b3e4f09d708a38478ecf;hpb=1759388e3fc948e5f2ddb15da601c4d624618828;p=xonotic%2Fgmqcc.git diff --git a/doc/gmqcc.1 b/doc/gmqcc.1 index da79a5b..6ede944 100644 --- a/doc/gmqcc.1 +++ b/doc/gmqcc.1 @@ -351,15 +351,28 @@ __RANDOM__ __RANDOM_LAST__ __DATE__ __TIME__ +__FUNC__ .Ed .Pp +Note that +.Li __FUNC__ +is not actually a preprocessor macro, but is recognized by the parser +even with the preprocessor disabled. +.Pp Note that fteqcc also defines .Li __NULL__ -which is not implemented yet. +which becomes the first global. Assigning it to a vector does not +yield the same result as in gmqcc where +.Li __NULL__ +is defined to +.Li nil (See .Fl f Ns Cm untyped-nil -about gmqcc's alternative to -.Li __NULL__ Ns ). +), which will cause the vector to be zero in all components. With fteqcc +only the first component will be 0, while the other two will become +the first to of the global return value. This behavior is odd and +relying on it should be discouraged, and thus is not supported by +gmqcc. .It Fl f Ns Cm relaxed-switch Allow switch cases to use non constant variables. .It Fl f Ns Cm short-logic @@ -484,6 +497,27 @@ 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 +} .El .Sh OPTIMIZATIONS .Bl -tag -width Ds