*/
#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,
# include "opts.def"
OPTION_COUNT
};
-static const char *opts_options_descriptions[OPTION_COUNT + 1] = {
+
+
+GMQCC_USED static const char *opts_options_descriptions[] = {
# define GMQCC_TYPE_OPTIONS
# define GMQCC_DEFINE_FLAG(X, Y) Y,
# include "opts.def"
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;
} 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)];
#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