X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=gmqcc.ini.example;h=b0ab51ff6d533838078a614c0af0f81d8f17c359;hp=d1e291425d14030fa342e343ac0c4bab42e921ba;hb=e11a17b40805b93e1e2ae80129c9d235b6d6119b;hpb=0e40ef172af05cbc8154f99c250d531723c44b8c diff --git a/gmqcc.ini.example b/gmqcc.ini.example index d1e2914..b0ab51f 100644 --- a/gmqcc.ini.example +++ b/gmqcc.ini.example @@ -58,6 +58,55 @@ # 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 + # These are all the warnings, usually present via the -W prefix from # the command line. [warnings] @@ -84,7 +133,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 +192,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 +234,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