X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=gmqcc.h;h=ae443014678ec7a4aed55688691b8c63952c9395;hb=06ff6eb054b877642e66bac57ad858c5a176476a;hp=fed9b31f422d1452454ec8104606432bd5117b64;hpb=d201cfe6b49f95ba8bcaa0eebb3a6fb7e1a16913;p=xonotic%2Fgmqcc.git diff --git a/gmqcc.h b/gmqcc.h index fed9b31..ae44301 100644 --- a/gmqcc.h +++ b/gmqcc.h @@ -102,8 +102,10 @@ GMQCC_IND_STRING(GMQCC_VERSION_PATCH) \ */ #if defined(__GNUC__) || defined(__CLANG__) # define GMQCC_WARN __attribute__((warn_unused_result)) +# define GMQCC_USED __attribute__((used)) #else # define GMQCC_WARN +# define GMQCC_USED #endif /* * This is a hack to silent clang regarding empty @@ -451,7 +453,8 @@ GMQCC_INLINE FILE *file_open (const char *, const char *); /*=========================== correct.c =============================*/ /*===================================================================*/ typedef struct { - char ***edits; + char ***edits; + size_t **lens; } correction_t; void correct_del (correct_trie_t*, size_t **); @@ -681,17 +684,11 @@ enum { INSTR_BITAND, INSTR_BITOR, - /* - * Virtual instructions used by the assembler - * keep at the end but before virtual instructions - * for the IR below. - */ - AINSTR_END, - /* * Virtual instructions used by the IR * Keep at the end! */ + VINSTR_END, VINSTR_PHI, VINSTR_JUMP, VINSTR_COND, @@ -1061,7 +1058,6 @@ int u8_fromchar(uchar_t w, char *to, size_t maxlen); typedef struct { const char *name; longbit bit; - const char *description; } opts_flag_def; bool opts_setflag (const char *, bool); @@ -1082,61 +1078,55 @@ void opts_restore_non_Werror_all(); enum { # define GMQCC_TYPE_FLAGS -# define GMQCC_DEFINE_FLAG(X, Y) X, +# define GMQCC_DEFINE_FLAG(X) X, # include "opts.def" COUNT_FLAGS }; static const opts_flag_def opts_flag_list[] = { # define GMQCC_TYPE_FLAGS -# define GMQCC_DEFINE_FLAG(X, Y) { #X, LONGBIT(X), Y}, +# define GMQCC_DEFINE_FLAG(X) { #X, LONGBIT(X) }, # include "opts.def" - { NULL, LONGBIT(0), "" } + { NULL, LONGBIT(0) } }; enum { # define GMQCC_TYPE_WARNS -# define GMQCC_DEFINE_FLAG(X, Y) WARN_##X, +# define GMQCC_DEFINE_FLAG(X) WARN_##X, # include "opts.def" COUNT_WARNINGS }; static const opts_flag_def opts_warn_list[] = { # define GMQCC_TYPE_WARNS -# define GMQCC_DEFINE_FLAG(X, Y) { #X, LONGBIT(WARN_##X), Y }, +# define GMQCC_DEFINE_FLAG(X) { #X, LONGBIT(WARN_##X) }, # include "opts.def" - { NULL, LONGBIT(0), "" } + { NULL, LONGBIT(0) } }; enum { # define GMQCC_TYPE_OPTIMIZATIONS -# define GMQCC_DEFINE_FLAG(NAME, MIN_O, Y) OPTIM_##NAME, +# define GMQCC_DEFINE_FLAG(NAME, MIN_O) OPTIM_##NAME, # include "opts.def" COUNT_OPTIMIZATIONS }; static const opts_flag_def opts_opt_list[] = { # define GMQCC_TYPE_OPTIMIZATIONS -# define GMQCC_DEFINE_FLAG(NAME, MIN_O, Y) { #NAME, LONGBIT(OPTIM_##NAME), Y}, +# define GMQCC_DEFINE_FLAG(NAME, MIN_O) { #NAME, LONGBIT(OPTIM_##NAME) }, # include "opts.def" - { NULL, LONGBIT(0), "" } + { NULL, LONGBIT(0) } }; static const unsigned int opts_opt_oflag[] = { # define GMQCC_TYPE_OPTIMIZATIONS -# define GMQCC_DEFINE_FLAG(NAME, MIN_O, Y) MIN_O, +# define GMQCC_DEFINE_FLAG(NAME, MIN_O) MIN_O, # include "opts.def" 0 }; enum { # define GMQCC_TYPE_OPTIONS -# define GMQCC_DEFINE_FLAG(X, Y) OPTION_##X, +# define GMQCC_DEFINE_FLAG(X) OPTION_##X, # include "opts.def" OPTION_COUNT }; -static const char *opts_options_descriptions[OPTION_COUNT + 1] = { -# define GMQCC_TYPE_OPTIONS -# define GMQCC_DEFINE_FLAG(X, Y) Y, -# include "opts.def" - "" -}; extern unsigned int opts_optimizationcount[COUNT_OPTIMIZATIONS]; @@ -1148,13 +1138,6 @@ typedef enum { COMPILER_GMQCC /* this QuakeC */ } opts_std_t; -typedef enum { - OPT_TYPE_BOOL, - OPT_TYPE_U16, - OPT_TYPE_U32, - OPT_TYPE_STR -} opt_type_t; - typedef union { bool B; uint16_t U16; @@ -1163,10 +1146,6 @@ typedef union { } opt_value_t; -#define OPTION_VALUE_BOOL(X) (opts.options[X].B) -#define OPTION_VALUE_U16(X) (opts.options[X].U16) -#define OPTION_VALUE_U32(X) (opts.options[X].U32) -#define OPTION_VALUE_STR(X) (opts.options[X].STR) typedef struct { opt_value_t options [OPTION_COUNT]; uint32_t flags [1 + (COUNT_FLAGS / 32)]; @@ -1184,5 +1163,9 @@ extern opts_cmd_t opts; #define OPTS_WARN(i) OPTS_GENERIC(opts.warn, (i)) #define OPTS_WERROR(i) OPTS_GENERIC(opts.werror, (i)) #define OPTS_OPTIMIZATION(i) OPTS_GENERIC(opts.optimization, (i)) +#define OPTS_OPTION_BOOL(X) (opts.options[X].B) +#define OPTS_OPTION_U16(X) (opts.options[X].U16) +#define OPTS_OPTION_U32(X) (opts.options[X].U32) +#define OPTS_OPTION_STR(X) (opts.options[X].STR) #endif