]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - doc/gmqcc.1
-Ovoid-return - the last INSTR_RETURN of a void functions is replaced by INSTR_DONE...
[xonotic/gmqcc.git] / doc / gmqcc.1
index 38b6fe1b99facb124a97953dd1213056a08166fc..dbf5bab362bc7a296b741e7181d6b5b2f649c040 100644 (file)
@@ -50,6 +50,11 @@ be overwritten.
 List all possible optimizations and the optimization level they're
 activated at.
 .TP
+.BR -q ", " --quiet
+Be less verbose. In particular removes the messages about which files
+are being processed, and which compilation mode is being used, and
+some others. Warnings and errors will of course still be displayed.
+.TP
 .BI -W warning "\fR, " "" -Wno- warning
 Enable or disable a warning.
 .TP
@@ -244,10 +249,6 @@ token inside the enclosing attribute-brackets. This may change when
 the actual attribute syntax is better defined.
 .SH COMPILE FLAGS
 .TP
-.B -foverlap-locals
-Allow local variables to overlap with each other if they don't
-interfer with each other. (Not implemented right now)
-.TP
 .B -fdarkplaces-string-table-bug
 Add some additional characters to the string table in order to
 compensate for a wrong boundcheck in some specific version of the
@@ -266,6 +267,23 @@ Enable a partially fteqcc-compatible preprocessor. It supports all the
 features used in the Xonotic codebase. If you need more, write a
 ticket.
 .TP
+.B -fftepp-predefs
+Enable some predefined macros. This only works in combination with
+\'-fftepp' and is currently not included by '-std=fteqcc'. The
+following macros will be added:
+.in +4
+.nf
+__LINE__
+__FILE__
+__COUNTER__
+__COUNTER_LAST__
+__RANDOM__
+__RANDOM_LAST__
+.fi
+.in
+Note that fteqcc also defines __FUNC__, __TIME__, __DATE__ and
+__NULL__, which are not yet implemented.
+.TP
 .B -frelaxed-switch
 Allow switch cases to use non constant variables.
 .TP
@@ -358,6 +376,46 @@ as long as the functions cannot be called in a recursive manner. Since
 it's hard to know whether or not an array is actually fully
 initialized, especially when initializing it via a loop, we assume
 functions with arrays to be too dangerous for this optimization.
+.TP
+.B -Olocal-temps
+This promotes locally declared variables to "temps". Meaning when a
+temporary result of an operation has to be stored somewhere, a local
+variable which is not 'alive' at that point can be used to keep the
+result. This can reduce the size of the global section.
+This will not have declared variables overlap, even if it was
+possible.
+.TP
+.B -Ostrip-constant-names
+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.
 .SH CONFIG
 The configuration file is similar to regular .ini files. Comments
 start with hashtags or semicolons, sections are written in square
@@ -390,6 +448,10 @@ Here's an example:
 .fi
 .in
 .SH BUGS
+Currently the '-fftepp-predefs' flag is not included by '-std=fteqcc',
+partially because it is not entirely conformant to fteqcc.
+.sp
+
 Please report bugs on <http://github.com/graphitemaster/gmqcc/issues>,
 or see <http://graphitemaster.github.com/gmqcc> on how to contact us.
 .SH FILES