X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=gmqcc.ini.example;h=b99d2bfa2f181611717bbfe7afd84a967e07b7e7;hp=d1e291425d14030fa342e343ac0c4bab42e921ba;hb=a68f0fcb355db42acabe72da5939fbd1b04f6016;hpb=0e40ef172af05cbc8154f99c250d531723c44b8c diff --git a/gmqcc.ini.example b/gmqcc.ini.example index d1e2914..b99d2bf 100644 --- a/gmqcc.ini.example +++ b/gmqcc.ini.example @@ -1,5 +1,5 @@ # This is an example INI file that can be used to set compiler options -# without the rquirement for supplying them as arguments on the command +# without the requirement for supplying them as arguments on the command # line, this can be coupled with progs.src. To utilize this file there # are two options availble, if it's named "gmqcc.ini" or "gmqcc.cfg" and # the file exists in the directory that GMQCC is invoked from, the compiler @@ -11,7 +11,7 @@ # These are common compiler flags usually represented via the -f prefix # from the command line. [flags] - # Enabling this can potentially reduces code size by overlapping + # Enabling this can potentially reduce code size by overlapping # locals where possible. OVERLAP_LOCALS = false @@ -58,6 +58,60 @@ # Enabling this corrects ternary percedence bugs present in fteqcc. CORRECT_TERNARY = true + # Prevent the creation of _x, _y and _z progdefs for vectors + SINGLE_VECTOR_DEFS = false + + # Cast vectors to real booleans when used in logic expressions. + # This is achieved by using NOT_V. + CORRECT_LOGIC = false + + # Always treat empty strings as true. Usuall !"" yields true, because + # the string-NOT instruction considers empty strings to be false, while + # an empty string as condition for 'if' will be considered true, since + # only the numerical value of the global is looked at. + TRUE_EMPTY_STRINGS = false + + # Opposite of the above, empty strings are always false. Similar to + # CORRECT_LOGIC this will always use NOT_S to cast a string to a real + # boolean value. + FALSE_EMPTY_STRINGS = false + + # Recognize utf-8 characters in character constants, and encode + # codepoint escape sequences in strings as utf-8. This essentially allows + # \{1234} escape sequences to be higher than 255. + UTF8 + + # When a warning is printed and it is set to be treated as error via + # a -Werror switch, compilation will be stopped, unless this is false. + # When this is false, the rest of the code will be compiled, and at the end + # the file and line of the first warning will be shown. + BAIL_ON_WERROR = true + + # Allow loops and switches to be labeled and break and continue to take an + # optional label to target a specific loop/switch. + LOOP_LABELS = false + + # Enable the 'nil' null constant, which has no type. It can be used as the + # right hand of any assignment regardless of the required type. + UNTYPED_NIL = false + + # Be "permissive". For instance, when -funtyped-nil is used, this allows local + # variables with the name 'nil' to be declared. + PREMISSIVE = false + + # Allow vararg access from within QC of the form: ...(argnumber, type) + VARIADIC_ARGS = true + + # 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. + LEGACY_VECTOR_MATHS = true + + # Builtin-numbers are usually just immediate constants. + # The following allows whole expressions to be used, as long as they + # are compile-time constant. + EXPRESSIONS_FOR_BUILTINS = false + # These are all the warnings, usually present via the -W prefix from # the command line. [warnings] @@ -84,7 +138,7 @@ MISSING_RETURN_VALUES = true # Enables warnings about missing parameters for function calls. - TOO_FEW_PARAMETERS = true + INVALID_PARAMETER_COUNT = true # Enables warnings about locals shadowing parameters or other locals. LOCAL_SHADOWS = true @@ -143,6 +197,36 @@ # Enables preprocessor "#warnings" CPP = true + # With the [[attribute]] syntax enabled, warn when an unknown + # attribute is encountered. Its first token will be included in the + # message. + UNKNOWN_ATTRIBUTE = true + + # Warn when declaring variables or fields with a reserved name like 'nil' + RESERVED_NAMES = true + + # Warn about 'const'-qualified global variables with no initializing value. + UNINITIALIZED_CONSTANT = true + + # Warn about non-constant global variables with no initializing value. + UNINITIALIZED_GLOBAL = true + + # Redeclaring a 'const' as 'var' or the other way round. + DIFFERENT_QUALIFIERS = true + + # Redeclaring a function with different attributes such as + # [[noreturn]] + DIFFERENT_ATTRIBUTES = true + + # Warn when a function is marked with the attribute + # "[[deprecated]]". This flag enables a warning on calls to functions + # marked as such. + DEPRECATED = true + + # Warn about possible problems from missing parenthesis, like an + # assignment used as truth value without additional parens around. + PARENTHESIS = true + # Finally these are all the optimizations, usually present via the -O # prefix from the command line. [optimizations] @@ -155,5 +239,29 @@ # Enables tail recrusion optimizationd. TAIL_RECURSION = true - # Enables tail-call optimizations. + # Enables tail-call optimizations. (Not implemented) TAIL_CALLS = true + + # Every function where it is safe to do so will share its local data section + # with the others. The criteria are currently that the function must not have + # any possibly uninitialized locals, or local arrays regardless of how they + # are initialized. + OVERLAP_LOCALS = false + + # Strip out the names of constants to save some space in the progs.dat + STRIP_CONSTANT_NAMES = true + + # Aggressivly reuse strings in the string-section + OVERLAP_STRINGS = true + + # Have expressions which are used as function parameters evaluate directly + # into the parameter-globals if possible. + # This avoids a whole lot of copying. + CALL_STORES = true + + # Do not create a RETURN instruction at the end functions of return-type void. + VOID_RETURN = true + + # Turn extraction-multiplications such as (a_vector * '0 1 0') + # into direct component accesses + VECTOR_COMPONENTS = true