X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=main.c;h=8aae427b5e886b3ce1b7c3e35249368c5a8d6380;hp=3dac2e1973cfe1bfe0a17b7359ba6e3549b515b7;hb=69c4dce4771fb5720b9f3fa3e0eff0416f3d138e;hpb=23cb7f4e096e5cf6e08636a808820d480079db96 diff --git a/main.c b/main.c index 3dac2e1..8aae427 100644 --- a/main.c +++ b/main.c @@ -25,8 +25,6 @@ #include #include #include -#include - #include "gmqcc.h" #include "lexer.h" @@ -47,7 +45,6 @@ static ppitem *ppems = NULL; #define TYPE_ASM 1 #define TYPE_SRC 2 - static const char *app_name; static void version(void) { @@ -176,6 +173,7 @@ static bool options_parse(int argc, char **argv) { opts_set(opts.werror, WARN_INVALID_PARAMETER_COUNT, true); opts_set(opts.werror, WARN_MISSING_RETURN_VALUES, true); opts_set(opts.flags, EXPRESSIONS_FOR_BUILTINS, true); + opts_set(opts.warn, WARN_BREAKDEF, true); OPTS_OPTION_U32(OPTION_STANDARD) = COMPILER_GMQCC; @@ -196,8 +194,10 @@ static bool options_parse(int argc, char **argv) { opts_set(opts.flags, ASSIGN_FUNCTION_TYPES, true); opts_set(opts.flags, CORRECT_TERNARY, false); opts_set(opts.warn, WARN_TERNARY_PRECEDENCE, true); + opts_set(opts.warn, WARN_BREAKDEF, true); OPTS_OPTION_U32(OPTION_STANDARD) = COMPILER_FTEQCC; + OPTS_OPTION_BOOL(OPTION_STATISTICS) = true; } else if (!strcmp(argarg, "qccx")) { @@ -411,7 +411,7 @@ static bool options_parse(int argc, char **argv) { con_out("option -O requires a numerical argument, or optimization name with an optional 'no-' prefix\n"); return false; } - if (isdigit(argarg[0])) { + if (util_isdigit(argarg[0])) { uint32_t val = (uint32_t)strtol(argarg, NULL, 10); OPTS_OPTION_U32(OPTION_O) = val; opts_setoptimlevel(val); @@ -536,9 +536,9 @@ static bool progs_nextline(char **out, size_t *alen,FILE *src) { return false; /* start at first non-blank */ - for (start = line; isspace(*start); ++start) {} + for (start = line; util_isspace(*start); ++start) {} /* end at the first non-blank */ - for (end = start; *end && !isspace(*end); ++end) {} + for (end = start; *end && !util_isspace(*end); ++end) {} *out = line; /* move the actual filename to the beginning */ @@ -561,7 +561,7 @@ int main(int argc, char **argv) { app_name = argv[0]; con_init (); - opts_init("progs.dat", COMPILER_GMQCC, (1024 << 3)); + opts_init("progs.dat", COMPILER_QCC, (1024 << 3)); util_seed(time(0)); @@ -681,7 +681,7 @@ int main(int argc, char **argv) { if (!line[0] || (line[0] == '/' && line[1] == '/')) continue; - + if (hasline) { item.filename = util_strdup(line); item.type = TYPE_QC; @@ -697,9 +697,6 @@ int main(int argc, char **argv) { mem_d(line); } - if (retval) - goto cleanup; - if (vec_size(items)) { if (!OPTS_OPTION_BOOL(OPTION_QUIET) && !OPTS_OPTION_BOOL(OPTION_PP_ONLY)) @@ -791,7 +788,7 @@ cleanup: vec_free(ppems); if (!OPTS_OPTION_BOOL(OPTION_PP_ONLY)) - parser_cleanup(parser); + if(parser) parser_cleanup(parser); if (opts_output_free) mem_d(OPTS_OPTION_STR(OPTION_OUTPUT)); if (operators_free)