.IP 1
Minimal optimization level
.IP 0
-Disable optimization entierly
+Disable optimization entirely
.RE
.TP
.BI "-O" name "\fR, " "" -Ono- name
.B -Wall
Enable all warnings. Overrides preceding -W parameters.
.TP
+.BR -Werror ", " -Wno-error
+Controls whether or not all warnings should be treated as errors.
+.TP
+.BI -Werror- warning "\fR, " "" -Wno-error- warning
+Controls whether a specific warning should be an error.
+.TP
.B -Whelp
List all possible warn flags.
.TP
-f\fIno-\fRcorrect-ternary
.fi
.in
-.SH Warnings
+.SH COMPILE WARNINGS
.TP
.B -Wunused-variable
Generate a warning about variables which are declared but never used.
.TP
.B -Wpreprocessor
Enable warnings coming from the preprocessor. Like duplicate macro
-declarations.
+declarations. This warning triggers when there's a problem with the
+way the preprocessor has been used, it will \fBnot\fR affect warnings
+generated with the '#warning' directive. See -Wcpp.
+.TP
+.B -Wcpp
+Show warnings created using the preprocessor's '#warning' directive.
.TP
.B -Wmultifile-if
Warn if there's a preprocessor \fI#if\fR spanning across several
.B -Wunknown-pragmas
Warn when encountering an unrecognized \fI#pragma\fR line.
.TP
+.B -Wunreachable-code
+Warn about unreachable code. That is: code after a return statement,
+or code after a call to a function marked as 'noreturn'.
+.TP
.B -Wdebug
Enable some warnings added in order to help debugging in the compiler.
You won't need this.
-.SH Compile Flags
+.B -Wunknown-attribute
+Warn on an unknown attribute. The warning will inlclude only the first
+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
Normally vectors generate 4 defs, once for the vector, and once for
its components with _x, _y, _z suffixes. This option
prevents components from being listed.
+.TP
+.B -fcorrect-logic
+Most QC compilers translate if(a_vector) directly as an IF on the
+vector, which means only the x-component is checked. This causes
+vectors to be cast to actual booleans via a NOT_V and, if necessary, a
+NOT_F chained to it.
+.in +4
+.nf
+if (a_vector) // becomes
+if not(!a_vector)
+// likewise
+a = a_vector && a_float // becomes
+a = !!a_vector && a_float
+.fi
+.in
+.TP
+.B -ftrue-empty-strings
+An empty string is considered to be true everywhere. The NOT_S
+instruction usually considers an empty string to be false, this option
+effectively causes the unary not in strings to use NOT_F instead.
+.TP
+.B -ffalse-empty-strings
+An empty string is considered to be false everywhere. This means loops
+and if statements which depend on a string will perform a NOT_S
+instruction on the string before using it.
+.TP
+.B -futf8
+Enable utf8 characters. This allows utf-8 encoded character constants,
+and escape sequence codepoints in the valid utf-8 range. Effectively
+enabling escape sequences like '\\{x2211}'.
.SH CONFIG
The configuration file is similar to regular .ini files. Comments
start with hashtags or semicolons, sections are written in square
.SH BUGS
Please report bugs on <http://github.com/graphitemaster/gmqcc/issues>,
or see <http://graphitemaster.github.com/gmqcc> on how to contact us.
+.SH FILES
+.TP 20
+.B gmqcc.ini.example
+A documented example for a gmqcc.ini file.
.SH SEE ALSO
.IR qcvm (1)
.SH AUTHOR