*/
#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
/*=========================== correct.c =============================*/
/*===================================================================*/
typedef struct {
- char ***edits;
+ char ***edits;
+ size_t **lens;
} correction_t;
void correct_del (correct_trie_t*, size_t **);
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,
typedef struct {
const char *name;
longbit bit;
- const char *description;
} opts_flag_def;
bool opts_setflag (const char *, bool);
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[] = {
-# define GMQCC_TYPE_OPTIONS
-# define GMQCC_DEFINE_FLAG(X, Y) Y,
-# include "opts.def"
- "<null>"
-};
-
-
extern unsigned int opts_optimizationcount[COUNT_OPTIMIZATIONS];
/* other options: */
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;