X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=doc%2Fgmqcc.1;h=bbaaaf39ded1ec542cd5d19335a6027db80a4855;hb=456e80a7d5b7309ce9409e2f1ab9224a039eb890;hp=3f3983a0465d27c158cf7abc63895373f200f12d;hpb=c3dfe2c61c202dc62da01806c0ae78e4dcb3c3c2;p=xonotic%2Fgmqcc.git diff --git a/doc/gmqcc.1 b/doc/gmqcc.1 index 3f3983a..bbaaaf3 100644 --- a/doc/gmqcc.1 +++ b/doc/gmqcc.1 @@ -389,6 +389,41 @@ possible. Don't generate defs for immediate values or even declared constants. Meaning variables which are implicitly constant or qualified as such using the 'const' keyword. +.TP +.B -Ooverlap-strings +Aggressively reuse strings in the string section. When a string should +be added which is the trailing substring of an already existing +string, the existing string's tail will be returned instead of the new +string being added. + +For example the following code will only generate 1 string: + +.in +4 +.nf +print("Hell you!\\n"); +print("you!\\n"); // trailing substring of "Hello you!\\n" +.fi +.in +There's however one limitation. Strings are still processed in order, +so if the above print statements were reversed, this optimization +would not happen. +.TP +.B -Ocall-stores +By default, all parameters of a CALL are copied into the +parameter-globals right before the CALL instructions. This is the +easiest and safest way to translate calls, but also adds a lot of +unnecessary copying and unnecessary temporary values. This +optimization makes operations which are used as a parameter evaluate +directly into the parameter-global if that is possible, which is when +there's no other CALL instruction in between. +.TP +.B -Ovoid-return +Usually an empty RETURN instruction is added to the end of a void +typed function. However, additionally after every function a DONE +instruction is added for several reasons. (For example the qcvm's +disassemble switch uses it to know when the function ends.). This +optimization replaces that last RETURN with DONE rather than adding +the DONE additionally. .SH CONFIG The configuration file is similar to regular .ini files. Comments start with hashtags or semicolons, sections are written in square