mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2024-11-24 04:41:25 +00:00
Converting gmqcc.1 from man to mdoc style. It can produce nice html output so we can create an online version of the manpage which doesn't look like crap... still todo: qcvm.1
This commit is contained in:
parent
32f1a5d2c8
commit
ef0de47954
1 changed files with 320 additions and 342 deletions
662
doc/gmqcc.1
662
doc/gmqcc.1
|
@ -1,355 +1,349 @@
|
||||||
.\" Process with groff -man -Tascii file.3
|
.\"mdoc
|
||||||
.TH GMQCC 1 2012-07-12 "" "gmqcc Manual"
|
.Dd January 24, 2012
|
||||||
.SH NAME
|
.Dt GMQCC 1
|
||||||
gmqcc \- A Quake C compiler built from the NIH realm of sarcastic wit
|
.Os
|
||||||
.SH SYNOPSIS
|
.Sh NAME
|
||||||
.B gmqcc
|
.Nm gmqcc
|
||||||
[\fIOPTIONS\fR] [\fIfiles...\fR]
|
.Nd A Quake C compiler built from the NIH realm of sarcastic wit
|
||||||
.SH DESCRIPTION
|
.Sh SYNOPSIS
|
||||||
Traditionally, a QC compiler reads the file \fIprogs.src\fR which
|
.Nm gmqcc
|
||||||
in its first line contains the output filename, and the rest is a
|
.Op Cm options
|
||||||
|
.Op Ar files...
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Traditionally, a QC compiler reads the file
|
||||||
|
.Pa progs.src
|
||||||
|
which in its first line contains the output filename, and the rest is a
|
||||||
list of QC source files that are to be compiled in order.
|
list of QC source files that are to be compiled in order.
|
||||||
\fBgmqcc\fR optionally takes options to specify the output and
|
.Nm gmqcc
|
||||||
|
optionally takes options to specify the output and
|
||||||
input files on the commandline, and also accepts assembly files.
|
input files on the commandline, and also accepts assembly files.
|
||||||
.SH OPTIONS
|
.Sh OPTIONS
|
||||||
\fBgmqcc\fR mostly tries to mimic gcc's commandline handling, though
|
.Nm gmqcc
|
||||||
|
mostly tries to mimic gcc's commandline handling, though
|
||||||
there are also traditional long-options available.
|
there are also traditional long-options available.
|
||||||
.TP
|
.Bl -tag -width Ds
|
||||||
.B "-h, --help"
|
.It Fl h , Fl -help
|
||||||
Show a usage message and exit.
|
Show a usage message and exit.
|
||||||
.TP
|
.It Fl "debug"
|
||||||
.B "-debug"
|
|
||||||
Turn on some compiler debugging mechanisms.
|
Turn on some compiler debugging mechanisms.
|
||||||
.TP
|
.It Fl memchk
|
||||||
.B "-memchk"
|
|
||||||
Turn on compiler mem-check. (Shows allocations and checks for leaks.)
|
Turn on compiler mem-check. (Shows allocations and checks for leaks.)
|
||||||
.TP
|
.It Fl o , Fl -output= Ns Ar filename
|
||||||
.BI "-o, --output=" filename
|
|
||||||
Specify the output filename. Defaults to progs.dat. This will overwrite
|
Specify the output filename. Defaults to progs.dat. This will overwrite
|
||||||
the output file listed in a \fIprogs.src\fR file in case such a file is used.
|
the output file listed in a
|
||||||
.TP
|
.Pa progs.src
|
||||||
.BI "-O" number
|
file in case such a file is used.
|
||||||
|
.Bl -tag -width indent
|
||||||
|
.It Fl O Ns Ar number
|
||||||
Specify the optimization level
|
Specify the optimization level
|
||||||
.RS
|
.It Ar 3
|
||||||
.IP 3
|
|
||||||
Highest optimization level
|
Highest optimization level
|
||||||
.IP 2
|
.It Ar 2
|
||||||
Default optimization level
|
Default optimization level
|
||||||
.IP 1
|
.It Ar 1
|
||||||
Minimal optimization level
|
Minimal optimization level
|
||||||
.IP 0
|
.It Ar 0
|
||||||
Disable optimization entirely
|
Disable optimization entirely
|
||||||
.RE
|
.El
|
||||||
.TP
|
.Pp
|
||||||
.BI "-O" name "\fR, " "" -Ono- name
|
.It Fl O Ns Ar name Fl Ono- Ns Ar name
|
||||||
Enable or disable a specific optimization. Note that these options
|
Enable or disable a specific optimization. Note that these options
|
||||||
must be used after setting the optimization level, otherwise they'll
|
must be used after setting the optimization level, otherwise they'll
|
||||||
be overwritten.
|
be overwritten.
|
||||||
.TP
|
.It Fl O Ns Cm help
|
||||||
.B -Ohelp
|
|
||||||
List all possible optimizations and the optimization level they're
|
List all possible optimizations and the optimization level they're
|
||||||
activated at.
|
activated at.
|
||||||
.TP
|
.It Fl q , Fl -quiet
|
||||||
.BR -q ", " --quiet
|
|
||||||
Be less verbose. In particular removes the messages about which files
|
Be less verbose. In particular removes the messages about which files
|
||||||
are being processed, and which compilation mode is being used, and
|
are being processed, and which compilation mode is being used, and
|
||||||
some others. Warnings and errors will of course still be displayed.
|
some others. Warnings and errors will of course still be displayed.
|
||||||
.TP
|
.It Fl E
|
||||||
.B "-E"
|
Run only the preprocessor as if
|
||||||
Run only the preprocessor as if -fftepp was used and print the
|
.Fl f Ns Cm ftepp
|
||||||
preprocessed code to stdout.
|
was used and print the preprocessed code to stdout.
|
||||||
.TP
|
.It Fl W Ns Ar warning , Fl Wno- Ns Ar warning
|
||||||
.BI -W warning "\fR, " "" -Wno- warning
|
|
||||||
Enable or disable a warning.
|
Enable or disable a warning.
|
||||||
.TP
|
.It Fl W Ns Cm all
|
||||||
.B -Wall
|
Enable almost all warnings. Overrides preceding
|
||||||
Enable almost all warnings. Overrides preceding -W parameters.
|
.Fl W
|
||||||
.sp
|
parameters.
|
||||||
The following warnings will \fBnot\fR be anbled:
|
.Pp
|
||||||
.in +4
|
The following warnings will
|
||||||
.nf
|
.Em not
|
||||||
-Wuninitialized-global
|
be enabled:
|
||||||
.fi
|
.Bl -tag -width indent -offset indent
|
||||||
.in
|
.It Fl W Ns Cm uninitialized-global
|
||||||
.TP
|
.El
|
||||||
.BR -Werror ", " -Wno-error
|
.It Fl W Ns Cm error , Fl Wno- Ns Cm error
|
||||||
Controls whether or not all warnings should be treated as errors.
|
Controls whether or not all warnings should be treated as errors.
|
||||||
.TP
|
.It Fl Werror- Ns Ar warning , Fl Wno-error- Ns Ar warning
|
||||||
.BI -Werror- warning "\fR, " "" -Wno-error- warning
|
|
||||||
Controls whether a specific warning should be an error.
|
Controls whether a specific warning should be an error.
|
||||||
.TP
|
.It Fl W Ns Cm help
|
||||||
.B -Whelp
|
|
||||||
List all possible warn flags.
|
List all possible warn flags.
|
||||||
.TP
|
.It Fl f Ns Ar flag , Fl fno- Ns Ar flag
|
||||||
.BI -f flag "\fR, " "" -fno- flag
|
|
||||||
Enable or disable a specific compile flag. See the list of flags
|
Enable or disable a specific compile flag. See the list of flags
|
||||||
below.
|
below.
|
||||||
.TP
|
.It Fl f Ns Cm help
|
||||||
.B -fhelp
|
|
||||||
List all possible compile flags.
|
List all possible compile flags.
|
||||||
.TP
|
.It Fl nocolor
|
||||||
.B -nocolor
|
|
||||||
Disables colored output
|
Disables colored output
|
||||||
.TP
|
.It Fl config= Ns Ar file
|
||||||
.BI -config= file
|
Use an ini file to read all the
|
||||||
Use an ini file to read all the -O, -W and -f flag from. See the
|
.Fl O , Fl W
|
||||||
CONFIG section about the file format.
|
and
|
||||||
.TP
|
.Fl f
|
||||||
.BI "-redirout=" file
|
flag from. See the
|
||||||
Redirects standard output to a \fIfile\fR
|
.Sx CONFIG
|
||||||
.TP
|
section about the file format.
|
||||||
.BI "-redirerr=" file
|
.It Fl redirout= Ns Ar file
|
||||||
Redirects standard error to a \fIfile\fR
|
Redirects standard output to a
|
||||||
.TP
|
.Ar file
|
||||||
.BI "-std=" standard
|
.It Fl redirerr= Ns Ar file
|
||||||
|
Redirects standard error to a
|
||||||
|
.Ar file
|
||||||
|
.It Fl std= Ns Ar standard
|
||||||
Use the specified standard for parsing QC code. The following standards
|
Use the specified standard for parsing QC code. The following standards
|
||||||
are available:
|
are available:
|
||||||
.IR gmqcc , qcc , fteqcc
|
.Ar gmqcc , Ar qcc , Ar fteqcc
|
||||||
Selecting a standard also implies some -f options and behaves as if
|
Selecting a standard also implies some
|
||||||
those options have been written right after the -std option, meaning
|
.Fl f
|
||||||
if you changed them before the -std option, you're now overwriting
|
options and behaves as if
|
||||||
them.
|
those options have been written right after the
|
||||||
.sp
|
.Fl std
|
||||||
.BR -std=gmqcc " includes:"
|
option, meaning
|
||||||
.in +4
|
if you changed them before the
|
||||||
.nf
|
.Fl -std
|
||||||
-fadjust-vector-fields
|
option, you're now overwriting them.
|
||||||
-fcorrect-logic
|
.Pp
|
||||||
-ftrue-empty-strings
|
.Fl std= Ns Cm gmqcc No includes:
|
||||||
-floop-labels
|
.Bl -tag -width indent -compact -offset Ds
|
||||||
-finitialized-nonconstants
|
.It Fl f Ns Cm adjust-vector-fields
|
||||||
-ftranslatable-strings
|
.It Fl f Ns Cm correct-logic
|
||||||
-f\fIno-\fRfalse-empty-strings
|
.It Fl f Ns Cm true-empty-strings
|
||||||
-Winvalid-parameter-count
|
.It Fl f Ns Cm loop-labels
|
||||||
-Wmissing-returnvalues
|
.It Fl f Ns Cm initialized-nonconstants
|
||||||
-fcorrect-ternary (cannot be turned off)
|
.It Fl f Ns Cm translatable-strings
|
||||||
.fi
|
.It Fl fno- Ns Cm false-empty-strings
|
||||||
.in
|
.It Fl W Ns Cm invalid-parameter-count
|
||||||
.sp
|
.It Fl W Ns Cm missing-returnvalues
|
||||||
.BR -std=qcc " includes:"
|
.It Fl f Ns Cm correct-ternary Li (cannot be turned off)
|
||||||
.in +4
|
.El
|
||||||
.nf
|
.Pp
|
||||||
-fassign-function-types
|
.Fl std= Ns Cm qcc No includes:
|
||||||
-f\fIno-\fRadjust-vector-fields
|
.Bl -tag -width indent -compact -offset Ds
|
||||||
.fi
|
.It Fl f Ns Cm assign-function-types
|
||||||
.in
|
.It Fl fIno- Ns Cm adjust-vector-fields
|
||||||
.sp
|
.El
|
||||||
.BR -std=fteqcc " includes:"
|
.Pp
|
||||||
.in +4
|
.Fl std= Ns Cm fteqcc No includes:
|
||||||
.nf
|
.Bl -tag -width indent -compact -offset Ds
|
||||||
-fftepp
|
.It Fl f Ns Cm ftepp
|
||||||
-ftranslatable-strings
|
.It Fl f Ns Cm translatable-strings
|
||||||
-fassign-function-types
|
.It Fl f Ns Cm assign-function-types
|
||||||
-Wternary-precedence
|
.It Fl W Ns Cm ternary-precedence
|
||||||
-f\fIno-\fRadjust-vector-fields
|
.It Fl fno- Ns Cm adjust-vector-fields
|
||||||
-f\fIno-\fRcorrect-ternary
|
.It Fl fno- Ns Cm correct-ternary
|
||||||
.fi
|
.El
|
||||||
.in
|
.It Fl -add-info
|
||||||
.TP
|
|
||||||
.B "--add-info"
|
|
||||||
Adds compiler information to the generated binary file. Currently
|
Adds compiler information to the generated binary file. Currently
|
||||||
this includes the following globals:
|
this includes the following globals:
|
||||||
.RS
|
.Bl -tag -width indent -compact
|
||||||
.IP "reserved:version"
|
.It Li reserved:version
|
||||||
String containing the compiler version as printed by the --version
|
String containing the compiler version as printed by the --version
|
||||||
parameter.
|
parameter.
|
||||||
.RE
|
.El
|
||||||
.TP
|
.It Fl -correct , Fl -no-correct
|
||||||
.BR "--correct" ", " "--no-correct"
|
|
||||||
When enabled, errors about undefined values try to suggest an existing
|
When enabled, errors about undefined values try to suggest an existing
|
||||||
value via spell checking.
|
value via spell checking.
|
||||||
.TP
|
.It Fl dump
|
||||||
.B "-dump"
|
|
||||||
DEBUG OPTION. Print the code's intermediate representation before the
|
DEBUG OPTION. Print the code's intermediate representation before the
|
||||||
optimization and finalization passes to stdout before generating the
|
optimization and finalization passes to stdout before generating the
|
||||||
binary.
|
binary.
|
||||||
.TP
|
.It Fl dumpfin
|
||||||
.B "-dumpfin"
|
|
||||||
DEBUG OPTION. Print the code's intermediate representation after the
|
DEBUG OPTION. Print the code's intermediate representation after the
|
||||||
optimization and finalization passes to stdout before generating the
|
optimization and finalization passes to stdout before generating the
|
||||||
binary. The instructions will be enumerated, and values will contain a
|
binary. The instructions will be enumerated, and values will contain a
|
||||||
list of liferanges.
|
list of liferanges.
|
||||||
.SH COMPILE WARNINGS
|
.El
|
||||||
.TP
|
.Sh COMPILE WARNINGS
|
||||||
.B -Wunused-variable
|
.Bl -tag -width Ds
|
||||||
|
.It Fl W Ns Cm unused-variable
|
||||||
Generate a warning about variables which are declared but never used.
|
Generate a warning about variables which are declared but never used.
|
||||||
This can be avoided by adding the \fInoref\fR keyword in front of the
|
This can be avoided by adding the
|
||||||
|
.Ql noref
|
||||||
|
keyword in front of the
|
||||||
variable declaration. Additionally a complete section of unreferenced
|
variable declaration. Additionally a complete section of unreferenced
|
||||||
variables can be opened using \fI#pragma noref 1\fR, and closed via
|
variables can be opened using
|
||||||
\fI#pragma noref 0\fR.
|
.Ql #pragma noref 1
|
||||||
.TP
|
and closed via
|
||||||
.B -Wused-uninitialized
|
.Ql #pragma noref 0 Ns .
|
||||||
|
.It Fl W Ns Cm used-uninitialized
|
||||||
Generate a warning if it is possible that a variable can be used
|
Generate a warning if it is possible that a variable can be used
|
||||||
without prior initialization. Note that this warning is not
|
without prior initialization. Note that this warning is not
|
||||||
necessarily reliable if the initialization happens only under certain
|
necessarily reliable if the initialization happens only under certain
|
||||||
conditions. The other way is \fInot\fR possible: that the warning is
|
conditions. The other way is
|
||||||
\fInot\fR generated when uninitialized use \fIis possible\fR.
|
.Em not
|
||||||
.TP
|
possible: that the warning is
|
||||||
.B -Wunknown-control-sequence
|
.Em not
|
||||||
|
generated when uninitialized use
|
||||||
|
.Em is
|
||||||
|
possible.
|
||||||
|
.It Fl W Ns Cm unknown-control-sequence
|
||||||
Generate an error when an unrecognized control sequence in a string is
|
Generate an error when an unrecognized control sequence in a string is
|
||||||
used. Meaning: when there's a character after a backslash in a string
|
used. Meaning: when there's a character after a backslash in a string
|
||||||
which has no known meaning.
|
which has no known meaning.
|
||||||
.TP
|
.It Fl W Ns Cm extensions
|
||||||
.B -Wextensions
|
|
||||||
Warn when using special extensions which are not part of the selected
|
Warn when using special extensions which are not part of the selected
|
||||||
standard.
|
standard.
|
||||||
.TP
|
.It Fl W Ns Cm field-redeclared
|
||||||
.B -Wfield-redeclared
|
|
||||||
Generally QC compilers ignore redeclaration of fields. Here you can
|
Generally QC compilers ignore redeclaration of fields. Here you can
|
||||||
optionally enable a warning.
|
optionally enable a warning.
|
||||||
.TP
|
.It Fl W Ns Cm missing-return-values
|
||||||
.B -Wmissing-return-values
|
Functions which aren't of type
|
||||||
Functions which aren't of type \fIvoid\fR will warn if it possible to
|
.Ft void
|
||||||
|
will warn if it possible to
|
||||||
reach the end without returning an actual value.
|
reach the end without returning an actual value.
|
||||||
.TP
|
.It Fl W Ns Cm invalid-parameter-count
|
||||||
.B -Winvalid-parameter-count
|
|
||||||
Warn about a function call with an invalid number of parameters.
|
Warn about a function call with an invalid number of parameters.
|
||||||
.TP
|
.It Fl W Ns Cm local-shadows
|
||||||
.B -Wlocal-shadows
|
|
||||||
Warn when a locally declared variable shadows variable.
|
Warn when a locally declared variable shadows variable.
|
||||||
.TP
|
.It Fl W Ns Cm local-constants
|
||||||
.B -Wlocal-constants
|
|
||||||
Warn when the initialization of a local variable turns the variable
|
Warn when the initialization of a local variable turns the variable
|
||||||
into a constant. This is default behaviour unless
|
into a constant. This is default behaviour unless
|
||||||
\fI-finitialized-nonconstants\fR is used.
|
.Fl f Ns Cm initialized-nonconstants
|
||||||
.TP
|
is used.
|
||||||
.B -Wvoid-variables
|
.It Fl W Ns Cm void-variables
|
||||||
There are only 2 known global variables of type void: end_sys_globals
|
There are only 2 known global variables of type void:
|
||||||
and end_sys_fields. Any other void-variable will warn.
|
.Ql end_sys_globals
|
||||||
.TP
|
and
|
||||||
.B -Wimplicit-function-pointer
|
.Ql end_sys_fields Ns .
|
||||||
A global function which is not declared with the \fIvar\fR keyword is
|
Any other void-variable will warn.
|
||||||
|
.It Fl W Ns Cm implicit-function-pointer
|
||||||
|
A global function which is not declared with the
|
||||||
|
.Ql var
|
||||||
|
keyword is
|
||||||
expected to have an implementing body, or be a builtin. If neither is
|
expected to have an implementing body, or be a builtin. If neither is
|
||||||
the case, it implicitly becomes a function pointer, and a warning is
|
the case, it implicitly becomes a function pointer, and a warning is
|
||||||
generated.
|
generated.
|
||||||
.TP
|
.It Fl W Ns Cm variadic-function
|
||||||
.B -Wvariadic-function
|
|
||||||
Currently there's no way for an in QC implemented function to access
|
Currently there's no way for an in QC implemented function to access
|
||||||
variadic parameters. If a function with variadic parameters has an
|
variadic parameters. If a function with variadic parameters has an
|
||||||
implementing body, a warning will be generated.
|
implementing body, a warning will be generated.
|
||||||
.TP
|
.It Fl W Ns Cm frame-macros
|
||||||
.B -Wframe-macros
|
Generate warnings about
|
||||||
Generate warnings about \fI$frame\fR commands, for instance about
|
.Ql $frame
|
||||||
|
commands, for instance about
|
||||||
duplicate frame definitions.
|
duplicate frame definitions.
|
||||||
.TP
|
.It Fl W Ns Cm effectless-statement
|
||||||
.B -Weffectless-statement
|
|
||||||
Warn about statements which have no effect. Any expression which does
|
Warn about statements which have no effect. Any expression which does
|
||||||
not call a function or assigns a variable.
|
not call a function or assigns a variable.
|
||||||
.TP
|
.It Fl W Ns Cm end-sys-fields
|
||||||
.B -Wend-sys-fields
|
The
|
||||||
The \fIend_sys_fields\fR variable is supposed to be a global variable
|
.Ql end_sys_fields
|
||||||
of type \fIvoid\fR. It is also recognized as a \fIfield\fR but this
|
variable is supposed to be a global variable
|
||||||
|
of type
|
||||||
|
.Ft void Ns .
|
||||||
|
It is also recognized as a \fIfield\fR but this
|
||||||
will generate a warning.
|
will generate a warning.
|
||||||
.TP
|
.It Fl W Ns Cm assign-function-types
|
||||||
.B -Wassign-function-types
|
|
||||||
Warn when assigning to a function pointer with an unmatching
|
Warn when assigning to a function pointer with an unmatching
|
||||||
signature. This usually happens in cases like assigning the null
|
signature. This usually happens in cases like assigning the null
|
||||||
function to an entity's .think function pointer.
|
function to an entity's .think function pointer.
|
||||||
.TP
|
.It Fl W Ns Cm preprocessor
|
||||||
.B -Wpreprocessor
|
|
||||||
Enable warnings coming from the preprocessor. Like duplicate macro
|
Enable warnings coming from the preprocessor. Like duplicate macro
|
||||||
declarations. This warning triggers when there's a problem with the
|
declarations. This warning triggers when there's a problem with the
|
||||||
way the preprocessor has been used, it will \fBnot\fR affect warnings
|
way the preprocessor has been used, it will \fBnot\fR affect warnings
|
||||||
generated with the '#warning' directive. See -Wcpp.
|
generated with the '#warning' directive. See -Wcpp.
|
||||||
.TP
|
.It Fl W Ns Cm cpp
|
||||||
.B -Wcpp
|
|
||||||
Show warnings created using the preprocessor's '#warning' directive.
|
Show warnings created using the preprocessor's '#warning' directive.
|
||||||
.TP
|
.It Fl W Ns Cm multifile-if
|
||||||
.B -Wmultifile-if
|
|
||||||
Warn if there's a preprocessor \fI#if\fR spanning across several
|
Warn if there's a preprocessor \fI#if\fR spanning across several
|
||||||
files.
|
files.
|
||||||
.TP
|
.It Fl W Ns Cm double-declaration
|
||||||
.B -Wdouble-declaration
|
|
||||||
Warn about multiple declarations of globals. This seems pretty common
|
Warn about multiple declarations of globals. This seems pretty common
|
||||||
in QC code so you probably do not want this unless you want to clean
|
in QC code so you probably do not want this unless you want to clean
|
||||||
up your code.
|
up your code.
|
||||||
.TP
|
.It Fl W Ns Cm const-var
|
||||||
.B -Wconst-var
|
|
||||||
The combination of \fIconst\fR and \fIvar\fR is not illegal, however
|
The combination of \fIconst\fR and \fIvar\fR is not illegal, however
|
||||||
different compilers may handle them differently. We were told, the
|
different compilers may handle them differently. We were told, the
|
||||||
intention is to create a function-pointer which is not assignable.
|
intention is to create a function-pointer which is not assignable.
|
||||||
This is exactly how we interpret it. However for this interpretation
|
This is exactly how we interpret it. However for this interpretation
|
||||||
the \fIvar\fR keyword is considered superfluous (and philosophically
|
the
|
||||||
|
.Ql var
|
||||||
|
keyword is considered superfluous (and philosophically
|
||||||
wrong), so it is possible to generate a warning about this.
|
wrong), so it is possible to generate a warning about this.
|
||||||
.TP
|
.It Fl W Ns Cm multibyte-character
|
||||||
.B -Wmultibyte-character
|
|
||||||
Warn about multibyte character constants, they do not work right now.
|
Warn about multibyte character constants, they do not work right now.
|
||||||
.TP
|
.It Fl W Ns Cm ternary-precedence
|
||||||
.B -Wternary-precedence
|
|
||||||
Warn if a ternary expression which contains a comma operator is used
|
Warn if a ternary expression which contains a comma operator is used
|
||||||
without enclosing parenthesis, since this is most likely not what you
|
without enclosing parenthesis, since this is most likely not what you
|
||||||
actually want. We recommend the \fI-fcorrect-ternary\fR option.
|
actually want. We recommend the
|
||||||
.TP
|
.Fl f Ns Cm correct-ternary
|
||||||
.B -Wunknown-pragmas
|
option.
|
||||||
Warn when encountering an unrecognized \fI#pragma\fR line.
|
.It Fl W Ns Cm unknown-pragmas
|
||||||
.TP
|
Warn when encountering an unrecognized
|
||||||
.B -Wunreachable-code
|
.Ql #pragma
|
||||||
|
line.
|
||||||
|
.It Fl W Ns Cm unreachable-code
|
||||||
Warn about unreachable code. That is: code after a return statement,
|
Warn about unreachable code. That is: code after a return statement,
|
||||||
or code after a call to a function marked as 'noreturn'.
|
or code after a call to a function marked as 'noreturn'.
|
||||||
.TP
|
.It Fl W Ns Cm debug
|
||||||
.B -Wdebug
|
|
||||||
Enable some warnings added in order to help debugging in the compiler.
|
Enable some warnings added in order to help debugging in the compiler.
|
||||||
You won't need this.
|
You won't need this.
|
||||||
.B -Wunknown-attribute
|
.It Fl W Ns Cm unknown-attribute
|
||||||
Warn on an unknown attribute. The warning will inlclude only the first
|
Warn on an unknown attribute. The warning will inlclude only the first
|
||||||
token inside the enclosing attribute-brackets. This may change when
|
token inside the enclosing attribute-brackets. This may change when
|
||||||
the actual attribute syntax is better defined.
|
the actual attribute syntax is better defined.
|
||||||
.TP
|
.It Fl W Ns Cm reserved-names
|
||||||
.B -Wreserved-names
|
Warn when using reserved names such as
|
||||||
Warn when using reserved names such as 'nil'.
|
.Ql nil Ns .
|
||||||
.TP
|
.It Fl W Ns Cm uninitialized-constant
|
||||||
.B -Wuninitialized-constant
|
Warn about global constants (using the
|
||||||
Warn about global constants (using the 'const' keyword) with no
|
.Ql const
|
||||||
|
keyword) with no
|
||||||
assigned value.
|
assigned value.
|
||||||
.TP
|
.It Fl W Ns Cm uninitialized-global
|
||||||
.B -Wuninitialized-global
|
|
||||||
Warn about global variables with no initializing value. This is off by
|
Warn about global variables with no initializing value. This is off by
|
||||||
default, and is added mostly to help find null-values which are
|
default, and is added mostly to help find null-values which are
|
||||||
supposed to be replaced by the untyped 'nil' constant.
|
supposed to be replaced by the untyped 'nil' constant.
|
||||||
.TP
|
.It Fl W Ns Cm different-qualifiers
|
||||||
.B -Wdifferent-qualifiers
|
|
||||||
Warn when a variables is redeclared with a different qualifier. For
|
Warn when a variables is redeclared with a different qualifier. For
|
||||||
example when redeclaring a variable as \'var\' which was previously
|
example when redeclaring a variable as \'var\' which was previously
|
||||||
marked \'const\'.
|
marked \'const\'.
|
||||||
.TP
|
.It Fl W Ns Cm different-attributes
|
||||||
.B -Wdifferent-attributes
|
Similar to the above but for attributes like
|
||||||
Similar to the above but for attributes like "[[noreturn]]".
|
.Ql [[noreturn]] Ns .
|
||||||
.TP
|
.It Fl W Ns Cm deprecated
|
||||||
.B -Wdeprecated
|
|
||||||
Warn when a function is marked with the attribute
|
Warn when a function is marked with the attribute
|
||||||
"[[deprecated]]". This flag enables a warning on calls to functions
|
"[[deprecated]]". This flag enables a warning on calls to functions
|
||||||
marked as such.
|
marked as such.
|
||||||
.TP
|
.It Fl W Ns Cm parenthesis
|
||||||
.B -Wparenthesis
|
|
||||||
Warn about possible mistakes caused by missing or wrong parenthesis,
|
Warn about possible mistakes caused by missing or wrong parenthesis,
|
||||||
like an assignment in an 'if' condition when there's no additional set
|
like an assignment in an 'if' condition when there's no additional set
|
||||||
of parens around the assignment.
|
of parens around the assignment.
|
||||||
.SH COMPILE FLAGS
|
.El
|
||||||
.TP
|
.Sh COMPILE FLAGS
|
||||||
.B -fdarkplaces-string-table-bug
|
.Bl -tag -width Ds
|
||||||
|
.It Fl f Ns Cm darkplaces-string-table-bug
|
||||||
Add some additional characters to the string table in order to
|
Add some additional characters to the string table in order to
|
||||||
compensate for a wrong boundcheck in some specific version of the
|
compensate for a wrong boundcheck in some specific version of the
|
||||||
darkplaces engine.
|
darkplaces engine.
|
||||||
.TP
|
.It Fl f Ns Cm adjust-vector-fields
|
||||||
.B -fadjust-vector-fields
|
|
||||||
When assigning to field pointers of type \fI.vector\fR the common
|
When assigning to field pointers of type \fI.vector\fR the common
|
||||||
behaviour in compilers like \fIfteqcc\fR is to only assign the
|
behaviour in compilers like \fIfteqcc\fR is to only assign the
|
||||||
x-component of the pointer. This means that you can use the vector as
|
x-component of the pointer. This means that you can use the vector as
|
||||||
such, but you cannot use its y and z components directly. This flag
|
such, but you cannot use its y and z components directly. This flag
|
||||||
fixes this behaviour. Before using it make sure your code does not
|
fixes this behaviour. Before using it make sure your code does not
|
||||||
depend on the buggy behaviour.
|
depend on the buggy behaviour.
|
||||||
.TP
|
.It Fl f Ns Cm ftepp
|
||||||
.B -fftepp
|
|
||||||
Enable a partially fteqcc-compatible preprocessor. It supports all the
|
Enable a partially fteqcc-compatible preprocessor. It supports all the
|
||||||
features used in the Xonotic codebase. If you need more, write a
|
features used in the Xonotic codebase. If you need more, write a
|
||||||
ticket.
|
ticket.
|
||||||
.TP
|
.It Fl f Ns Cm ftepp-predefs
|
||||||
.B -fftepp-predefs
|
|
||||||
Enable some predefined macros. This only works in combination with
|
Enable some predefined macros. This only works in combination with
|
||||||
\'-fftepp' and is currently not included by '-std=fteqcc'. The
|
\'-fftepp' and is currently not included by '-std=fteqcc'. The
|
||||||
following macros will be added:
|
following macros will be added:
|
||||||
.in +4
|
.Bd -literal -offset indent
|
||||||
.nf
|
|
||||||
__LINE__
|
__LINE__
|
||||||
__FILE__
|
__FILE__
|
||||||
__COUNTER__
|
__COUNTER__
|
||||||
|
@ -358,97 +352,88 @@ __RANDOM__
|
||||||
__RANDOM_LAST__
|
__RANDOM_LAST__
|
||||||
__DATE__
|
__DATE__
|
||||||
__TIME__
|
__TIME__
|
||||||
.fi
|
.Ed
|
||||||
.in
|
.Pp
|
||||||
Note that fteqcc also defines __NULL__ which is not implemented yet.
|
Note that fteqcc also defines
|
||||||
(See -funtyped-nil about gmqcc's alternative to __NULL__).
|
.Li __NULL__
|
||||||
.TP
|
which is not implemented yet.
|
||||||
.B -frelaxed-switch
|
(See
|
||||||
|
.Fl f Ns Cm untyped-nil
|
||||||
|
about gmqcc's alternative to
|
||||||
|
.Li __NULL__ Ns ).
|
||||||
|
.It Fl f Ns Cm relaxed-switch
|
||||||
Allow switch cases to use non constant variables.
|
Allow switch cases to use non constant variables.
|
||||||
.TP
|
.It Fl f Ns Cm short-logic
|
||||||
.B -fshort-logic
|
|
||||||
Perform early out in logical AND and OR expressions. The final result
|
Perform early out in logical AND and OR expressions. The final result
|
||||||
will be either a 0 or a 1, see the next flag for more possibilities.
|
will be either a 0 or a 1, see the next flag for more possibilities.
|
||||||
.TP
|
.It Fl f Ns Cm perl-logic
|
||||||
.B -fperl-logic
|
|
||||||
In many languages, logical expressions perform early out in a special
|
In many languages, logical expressions perform early out in a special
|
||||||
way: If the left operand of an AND yeilds true, or the one of an OR
|
way: If the left operand of an AND yeilds true, or the one of an OR
|
||||||
yields false, the complete expression evaluates to the right side.
|
yields false, the complete expression evaluates to the right side.
|
||||||
Thus \fItrue && 5\fI evaluates to 5 rather than 1.
|
Thus
|
||||||
.TP
|
.Ql true && 5
|
||||||
.B -ftranslatable-strings
|
evaluates to 5 rather than 1.
|
||||||
Enable the underscore intrinsic: Using \fI_("A string constant")\fR
|
.It Fl f Ns Cm translatable-strings
|
||||||
|
Enable the underscore intrinsic: Using
|
||||||
|
.Ql _("A string constant")
|
||||||
will cause the string immediate to get a name with a "dotranslate_"
|
will cause the string immediate to get a name with a "dotranslate_"
|
||||||
prefix. The darkplaces engine recognizes these and translates them in
|
prefix. The darkplaces engine recognizes these and translates them in
|
||||||
a way similar to how gettext works.
|
a way similar to how gettext works.
|
||||||
.TP
|
.It Fl f Ns Cm initialized-nonconstants
|
||||||
.B -finitialized-nonconstants
|
|
||||||
Don't implicitly convert initialized variables to constants. With this
|
Don't implicitly convert initialized variables to constants. With this
|
||||||
flag, the \fIconst\fR keyword is required to make a constant.
|
flag, the \fIconst\fR keyword is required to make a constant.
|
||||||
.TP
|
.It Fl f Ns Cm assign-function-types
|
||||||
.B -fassign-function-types
|
|
||||||
If this flag is not set, (and it is set by default in the qcc and
|
If this flag is not set, (and it is set by default in the qcc and
|
||||||
fteqcc standards), assigning function pointers of mismatching
|
fteqcc standards), assigning function pointers of mismatching
|
||||||
signatures will result in an error rather than a warning.
|
signatures will result in an error rather than a warning.
|
||||||
.TP
|
.It Fl f Ns Cm lno
|
||||||
.B -flno
|
|
||||||
Produce a linenumber file along with the output .dat file.
|
Produce a linenumber file along with the output .dat file.
|
||||||
.TP
|
.It Fl f Ns Cm correct-ternary
|
||||||
.B -fcorrect-ternary
|
|
||||||
Use C's operator precedence for ternary expressions. Unless your code
|
Use C's operator precedence for ternary expressions. Unless your code
|
||||||
depends on fteqcc-compatible behaviour, you'll want to use thi
|
depends on fteqcc-compatible behaviour, you'll want to use thi
|
||||||
soption.
|
soption.
|
||||||
.TP
|
.It Fl f Ns Cm single-vector-defs
|
||||||
.B -fsingle-vector-defs
|
|
||||||
Normally vectors generate 4 defs, once for the vector, and once for
|
Normally vectors generate 4 defs, once for the vector, and once for
|
||||||
its components with _x, _y, _z suffixes. This option
|
its components with _x, _y, _z suffixes. This option
|
||||||
prevents components from being listed.
|
prevents components from being listed.
|
||||||
.TP
|
.It Fl f Ns Cm correct-logic
|
||||||
.B -fcorrect-logic
|
Most QC compilers translate
|
||||||
Most QC compilers translate if(a_vector) directly as an IF on the
|
.Ql if(a_vector)
|
||||||
vector, which means only the x-component is checked. This causes
|
directly as an IF on the
|
||||||
|
vector, which means only the x-component is checked. This option causes
|
||||||
vectors to be cast to actual booleans via a NOT_V and, if necessary, a
|
vectors to be cast to actual booleans via a NOT_V and, if necessary, a
|
||||||
NOT_F chained to it.
|
NOT_F chained to it.
|
||||||
.in +4
|
.Bd -literal -offset indent
|
||||||
.nf
|
|
||||||
if (a_vector) // becomes
|
if (a_vector) // becomes
|
||||||
if not(!a_vector)
|
if not(!a_vector)
|
||||||
// likewise
|
// likewise
|
||||||
a = a_vector && a_float // becomes
|
a = a_vector && a_float // becomes
|
||||||
a = !!a_vector && a_float
|
a = !!a_vector && a_float
|
||||||
.fi
|
.Ed
|
||||||
.in
|
.It Fl f Ns Cm true-empty-strings
|
||||||
.TP
|
|
||||||
.B -ftrue-empty-strings
|
|
||||||
An empty string is considered to be true everywhere. The NOT_S
|
An empty string is considered to be true everywhere. The NOT_S
|
||||||
instruction usually considers an empty string to be false, this option
|
instruction usually considers an empty string to be false, this option
|
||||||
effectively causes the unary not in strings to use NOT_F instead.
|
effectively causes the unary not in strings to use NOT_F instead.
|
||||||
.TP
|
.It Fl f Ns Cm false-empty-strings
|
||||||
.B -ffalse-empty-strings
|
|
||||||
An empty string is considered to be false everywhere. This means loops
|
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
|
and if statements which depend on a string will perform a NOT_S
|
||||||
instruction on the string before using it.
|
instruction on the string before using it.
|
||||||
.TP
|
.It Fl f Ns Cm utf8
|
||||||
.B -futf8
|
|
||||||
Enable utf8 characters. This allows utf-8 encoded character constants,
|
Enable utf8 characters. This allows utf-8 encoded character constants,
|
||||||
and escape sequence codepoints in the valid utf-8 range. Effectively
|
and escape sequence codepoints in the valid utf-8 range. Effectively
|
||||||
enabling escape sequences like '\\{x2211}'.
|
enabling escape sequences like '\\{x2211}'.
|
||||||
.TP
|
.It Fl f Ns Cm bail-on-werror
|
||||||
.B -fbail-on-werror
|
|
||||||
When a warning is treated as an error, and this option is set (which
|
When a warning is treated as an error, and this option is set (which
|
||||||
it is by default), it is like any other error and will cause
|
it is by default), it is like any other error and will cause
|
||||||
compilation to stop. When disabling this flag by using
|
compilation to stop. When disabling this flag by using
|
||||||
\-fno-bail-on-werror, compilation will continue until the end, but no
|
\-fno-bail-on-werror, compilation will continue until the end, but no
|
||||||
output is generated. Instead the first such error message's context is
|
output is generated. Instead the first such error message's context is
|
||||||
shown.
|
shown.
|
||||||
.TP
|
.It Fl f Ns Cm loop-labels
|
||||||
.B -floop-labels
|
|
||||||
Allow loops to be labeled, and allow 'break' and 'continue' to take an
|
Allow loops to be labeled, and allow 'break' and 'continue' to take an
|
||||||
optional label to decide which loop to actually jump out of or
|
optional label to decide which loop to actually jump out of or
|
||||||
continue.
|
continue.
|
||||||
.sp
|
.Bd -literal -offset indent
|
||||||
.in +4
|
|
||||||
.nf
|
|
||||||
for :outer (i = 0; i < n; ++i) {
|
for :outer (i = 0; i < n; ++i) {
|
||||||
while (inner) {
|
while (inner) {
|
||||||
...;
|
...;
|
||||||
|
@ -456,10 +441,8 @@ for :outer (i = 0; i < n; ++i) {
|
||||||
continue outer;
|
continue outer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.fi
|
.Ed
|
||||||
.in
|
.It Fl f Ns Cm untyped-nil
|
||||||
.TP
|
|
||||||
.B -funtyped-nil
|
|
||||||
Adds a global named 'nil' which is of no type and can be assigned to
|
Adds a global named 'nil' which is of no type and can be assigned to
|
||||||
anything. No typechecking will be performed on assignments. Assigning
|
anything. No typechecking will be performed on assignments. Assigning
|
||||||
to it is forbidden, using it in any other kind of expression is also
|
to it is forbidden, using it in any other kind of expression is also
|
||||||
|
@ -477,48 +460,42 @@ components.
|
||||||
In that gmqcc the nil global is an actual global filled with zeroes,
|
In that gmqcc the nil global is an actual global filled with zeroes,
|
||||||
and can be assigned to anything including fields, vectors or function
|
and can be assigned to anything including fields, vectors or function
|
||||||
pointers, and they end up becoming zeroed.
|
pointers, and they end up becoming zeroed.
|
||||||
.TP
|
.It Fl f Ns Cm permissive
|
||||||
.B -fpermissive
|
|
||||||
Various effects, usually to weaken some conditions.
|
Various effects, usually to weaken some conditions.
|
||||||
.RS
|
.Bl -tag -width indent -offset indent
|
||||||
.IP "with -funtyped-nil"
|
.It with Fl f Ns Cm untyped-nil
|
||||||
Allow local variables named 'nil'. (This will not allow declaring a
|
Allow local variables named
|
||||||
global of that name.)
|
.Ql nil Ns .
|
||||||
.RE
|
(This will not allow declaring a global of that name.)
|
||||||
.TP
|
.El
|
||||||
.B -fvariadic-args
|
.It Fl f Ns Cm variadic-args
|
||||||
Allow variadic parameters to be accessed by QC code. This can be
|
Allow variadic parameters to be accessed by QC code. This can be
|
||||||
achieved via the '...' function, which takes a parameter index and a
|
achieved via the '...' function, which takes a parameter index and a
|
||||||
typename.
|
typename.
|
||||||
|
.Pp
|
||||||
Example:
|
Example:
|
||||||
.sp
|
.Bd -literal -offset indent
|
||||||
.in +4
|
|
||||||
.nf
|
|
||||||
void vafunc(string...count) {
|
void vafunc(string...count) {
|
||||||
float i;
|
float i;
|
||||||
for (i = 0; i < count; ++i)
|
for (i = 0; i < count; ++i)
|
||||||
print(...(i, string), "\\n");
|
print(...(i, string), "\\n");
|
||||||
}
|
}
|
||||||
.fi
|
.Ed
|
||||||
.in
|
.It Fl f Ns Cm legacy-vector-maths
|
||||||
.TP
|
|
||||||
.B -flegacy-vector-maths
|
|
||||||
Most Quake VMs, including the one from FTEQW or up till recently
|
Most Quake VMs, including the one from FTEQW or up till recently
|
||||||
Darkplaces, do not cope well with vector instructions with overlapping
|
Darkplaces, do not cope well with vector instructions with overlapping
|
||||||
input and output. This option will avoid producing such code.
|
input and output. This option will avoid producing such code.
|
||||||
.SH OPTIMIZATIONS
|
.El
|
||||||
.TP
|
.Sh OPTIMIZATIONS
|
||||||
.B -Opeephole
|
.Bl -tag -width Ds
|
||||||
|
.It Fl O Ns Cm peephole
|
||||||
Some general peephole optimizations. For instance the code `a = b + c`
|
Some general peephole optimizations. For instance the code `a = b + c`
|
||||||
typically generates 2 instructions, an ADD and a STORE. This
|
typically generates 2 instructions, an ADD and a STORE. This
|
||||||
optimization removes the STORE and lets the ADD write directly into A.
|
optimization removes the STORE and lets the ADD write directly into A.
|
||||||
.TP
|
.It Fl O Ns Cm tail-recursion
|
||||||
.B -Otail-recursion
|
|
||||||
Tail recursive function calls will be turned into loops to avoid the
|
Tail recursive function calls will be turned into loops to avoid the
|
||||||
overhead of the CALL and RETURN instructions.
|
overhead of the CALL and RETURN instructions.
|
||||||
.TP
|
.It Fl O Ns Cm overlap-locals
|
||||||
.B -Ooverlap-locals
|
|
||||||
Make all functions which use neither local arrays nor have locals
|
Make all functions which use neither local arrays nor have locals
|
||||||
which are seen as possibly uninitialized use the same local section.
|
which are seen as possibly uninitialized use the same local section.
|
||||||
This should be pretty safe compared to other compilers which do not
|
This should be pretty safe compared to other compilers which do not
|
||||||
|
@ -529,44 +506,37 @@ 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
|
it's hard to know whether or not an array is actually fully
|
||||||
initialized, especially when initializing it via a loop, we assume
|
initialized, especially when initializing it via a loop, we assume
|
||||||
functions with arrays to be too dangerous for this optimization.
|
functions with arrays to be too dangerous for this optimization.
|
||||||
.TP
|
.It Fl O Ns Cm local-temps
|
||||||
.B -Olocal-temps
|
|
||||||
This promotes locally declared variables to "temps". Meaning when a
|
This promotes locally declared variables to "temps". Meaning when a
|
||||||
temporary result of an operation has to be stored somewhere, a local
|
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
|
variable which is not 'alive' at that point can be used to keep the
|
||||||
result. This can reduce the size of the global section.
|
result. This can reduce the size of the global section.
|
||||||
This will not have declared variables overlap, even if it was
|
This will not have declared variables overlap, even if it was
|
||||||
possible.
|
possible.
|
||||||
.TP
|
.It Fl O Ns Cm global-temps
|
||||||
.B -Oglobal-temps
|
|
||||||
Causes temporary values which do not need to be backed up on a CALL to
|
Causes temporary values which do not need to be backed up on a CALL to
|
||||||
not be stored in the function's locals-area. With this, a CALL to a
|
not be stored in the function's locals-area. With this, a CALL to a
|
||||||
function may need to back up fewer values and thus execute faster.
|
function may need to back up fewer values and thus execute faster.
|
||||||
.TP
|
.It Fl O Ns Cm strip-constant-names
|
||||||
.B -Ostrip-constant-names
|
|
||||||
Don't generate defs for immediate values or even declared constants.
|
Don't generate defs for immediate values or even declared constants.
|
||||||
Meaning variables which are implicitly constant or qualified as such
|
Meaning variables which are implicitly constant or qualified as such
|
||||||
using the 'const' keyword.
|
using the 'const' keyword.
|
||||||
.TP
|
.It Fl O Ns Cm overlap-strings
|
||||||
.B -Ooverlap-strings
|
|
||||||
Aggressively reuse strings in the string section. When a string should
|
Aggressively reuse strings in the string section. When a string should
|
||||||
be added which is the trailing substring of an already existing
|
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, the existing string's tail will be returned instead of the new
|
||||||
string being added.
|
string being added.
|
||||||
|
.Pp
|
||||||
For example the following code will only generate 1 string:
|
For example the following code will only generate 1 string:
|
||||||
|
.Bd -literal -offset indent
|
||||||
.in +4
|
|
||||||
.nf
|
|
||||||
print("Hell you!\\n");
|
print("Hell you!\\n");
|
||||||
print("you!\\n"); // trailing substring of "Hello you!\\n"
|
print("you!\\n"); // trailing substring of "Hello you!\\n"
|
||||||
.fi
|
.Ed
|
||||||
.in
|
.Pp
|
||||||
There's however one limitation. Strings are still processed in order,
|
There's however one limitation. Strings are still processed in order,
|
||||||
so if the above print statements were reversed, this optimization
|
so if the above print statements were reversed, this optimization
|
||||||
would not happen.
|
would not happen.
|
||||||
.TP
|
.It Fl O Ns Cm call-stores
|
||||||
.B -Ocall-stores
|
|
||||||
By default, all parameters of a CALL are copied into the
|
By default, all parameters of a CALL are copied into the
|
||||||
parameter-globals right before the CALL instructions. This is the
|
parameter-globals right before the CALL instructions. This is the
|
||||||
easiest and safest way to translate calls, but also adds a lot of
|
easiest and safest way to translate calls, but also adds a lot of
|
||||||
|
@ -574,39 +544,48 @@ unnecessary copying and unnecessary temporary values. This
|
||||||
optimization makes operations which are used as a parameter evaluate
|
optimization makes operations which are used as a parameter evaluate
|
||||||
directly into the parameter-global if that is possible, which is when
|
directly into the parameter-global if that is possible, which is when
|
||||||
there's no other CALL instruction in between.
|
there's no other CALL instruction in between.
|
||||||
.TP
|
.It Fl O Ns Cm void-return
|
||||||
.B -Ovoid-return
|
|
||||||
Usually an empty RETURN instruction is added to the end of a void
|
Usually an empty RETURN instruction is added to the end of a void
|
||||||
typed function. However, additionally after every function a DONE
|
typed function. However, additionally after every function a DONE
|
||||||
instruction is added for several reasons. (For example the qcvm's
|
instruction is added for several reasons. (For example the qcvm's
|
||||||
disassemble switch uses it to know when the function ends.). This
|
disassemble switch uses it to know when the function ends.). This
|
||||||
optimization replaces that last RETURN with DONE rather than adding
|
optimization replaces that last RETURN with DONE rather than adding
|
||||||
the DONE additionally.
|
the DONE additionally.
|
||||||
.TP
|
.It Fl O Ns Cm vector-components
|
||||||
.B -Ovector-components
|
|
||||||
Because traditional QC code doesn't allow you to access individual
|
Because traditional QC code doesn't allow you to access individual
|
||||||
vector components of a computed vector without storing it in a local
|
vector components of a computed vector without storing it in a local
|
||||||
first, sometimes people multiply it by a constant like '0 1 0' to get,
|
first, sometimes people multiply it by a constant like
|
||||||
|
.Ql '0 1 0'
|
||||||
|
to get,
|
||||||
in this case, the y component of a vector. This optimization will turn
|
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
|
such a multiplication into a direct component access. If the factor is
|
||||||
anything other than 1, a float-multiplication will be added, which is
|
anything other than 1, a float-multiplication will be added, which is
|
||||||
still faster than a vector multiplication.
|
still faster than a vector multiplication.
|
||||||
.SH CONFIG
|
.El
|
||||||
|
.Sh CONFIG
|
||||||
The configuration file is similar to regular .ini files. Comments
|
The configuration file is similar to regular .ini files. Comments
|
||||||
start with hashtags or semicolons, sections are written in square
|
start with hashtags or semicolons, sections are written in square
|
||||||
brackets and in each section there can be arbitrary many key-value
|
brackets and in each section there can be arbitrary many key-value
|
||||||
pairs.
|
pairs.
|
||||||
.sp
|
.Pp
|
||||||
There are 3 sections currently:
|
There are 3 sections currently:
|
||||||
.IR flags ", " warnings ", and " optimizations .
|
.Ql flags Ns ,
|
||||||
They contain a list of boolean values of the form `VARNAME = true` or
|
.Ql warnings Ns ,
|
||||||
`VARNAME = false`. The variable names are the same as for the
|
.Ql optimizations Ns .
|
||||||
corresponding -W, -f or -O flag written with only capital letters and
|
They contain a list of boolean values of the form
|
||||||
|
.Ql VARNAME = true
|
||||||
|
or
|
||||||
|
.Ql VARNAME = false Ns .
|
||||||
|
The variable names are the same as for the
|
||||||
|
corresponding
|
||||||
|
.Fl W , Fl f
|
||||||
|
or
|
||||||
|
.Fl O
|
||||||
|
flag written with only capital letters and
|
||||||
dashes replaced by underscores.
|
dashes replaced by underscores.
|
||||||
.sp
|
.Pp
|
||||||
Here's an example:
|
Here's an example:
|
||||||
.in +4
|
.Bd -literal -offset indent
|
||||||
.nf
|
|
||||||
# a GMQCC configuration file
|
# a GMQCC configuration file
|
||||||
[flags]
|
[flags]
|
||||||
FTEPP = true
|
FTEPP = true
|
||||||
|
@ -620,20 +599,19 @@ Here's an example:
|
||||||
[optimizations]
|
[optimizations]
|
||||||
PEEPHOLE = true
|
PEEPHOLE = true
|
||||||
TAIL_RECURSION = true
|
TAIL_RECURSION = true
|
||||||
.fi
|
.Ed
|
||||||
.in
|
.Sh FILES
|
||||||
.SH BUGS
|
.Bl -tag -width Ds
|
||||||
|
.It gmqcc.ini.example
|
||||||
|
A documented example for a gmqcc.ini file.
|
||||||
|
.El
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr qcvm 1
|
||||||
|
.Sh AUTHOR
|
||||||
|
See <http://graphitemaster.github.com/gmqcc>.
|
||||||
|
.Sh BUGS
|
||||||
Currently the '-fftepp-predefs' flag is not included by '-std=fteqcc',
|
Currently the '-fftepp-predefs' flag is not included by '-std=fteqcc',
|
||||||
partially because it is not entirely conformant to fteqcc.
|
partially because it is not entirely conformant to fteqcc.
|
||||||
.sp
|
.Pp
|
||||||
|
|
||||||
Please report bugs on <http://github.com/graphitemaster/gmqcc/issues>,
|
Please report bugs on <http://github.com/graphitemaster/gmqcc/issues>,
|
||||||
or see <http://graphitemaster.github.com/gmqcc> on how to contact us.
|
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
|
|
||||||
See <http://graphitemaster.github.com/gmqcc>.
|
|
||||||
|
|
Loading…
Reference in a new issue