static void version() {
con_out("GMQCC %d.%d.%d Built %s %s\n",
- GMQCC_VERSION_MINOR,
GMQCC_VERSION_MAJOR,
+ GMQCC_VERSION_MINOR,
GMQCC_VERSION_PATCH,
__DATE__,
__TIME__
" -fhelp list possible flags\n");
con_out(" -W<warning> enable a warning\n"
" -Wno-<warning> disable a warning\n"
- " -Wall enable all warnings\n"
- " -Werror treat warnings as errors\n");
+ " -Wall enable all warnings\n");
+ con_out(" -Werror treat warnings as errors\n"
+ " -Werror-<warning> treat a warning as error\n"
+ " -Wno-error-<warning> opposite of the above\n");
con_out(" -Whelp list possible warnings\n");
con_out(" -O<number> optimization level\n"
" -O<name> enable specific optimization\n"
/* show defaults (like pathscale) */
if (!strcmp(argv[0]+1, "show-defaults")) {
- size_t itr;
- char buffer[1024];
for (itr = 0; itr < COUNT_FLAGS; ++itr) {
if (!OPTS_FLAG(itr))
continue;
/* debug turns on -flno */
case 'g':
opts_setflag("LNO", true);
+ opts.g = true;
break;
case 'D':
}
exit(0);
}
- else if (!strcmp(argv[0]+2, "NO_ERROR")) {
- opts.werror = false;
+ else if (!strcmp(argv[0]+2, "NO_ERROR") ||
+ !strcmp(argv[0]+2, "NO_ERROR_ALL"))
+ {
+ for (itr = 0; itr < sizeof(opts.werror)/sizeof(opts.werror[0]); ++itr)
+ opts.werror[itr] = 0;
break;
}
- else if (!strcmp(argv[0]+2, "ERROR")) {
- opts.werror = true;
+ else if (!strcmp(argv[0]+2, "ERROR") ||
+ !strcmp(argv[0]+2, "ERROR_ALL"))
+ {
+ for (itr = 0; itr < sizeof(opts.werror)/sizeof(opts.werror[0]); ++itr)
+ opts.werror[itr] = 0xFFFFFFFFL;
break;
}
else if (!strcmp(argv[0]+2, "NONE")) {
opts.warn[itr] = 0xFFFFFFFFL;
break;
}
- if (!strncmp(argv[0]+2, "NO_", 3)) {
+ else if (!strncmp(argv[0]+2, "ERROR_", 6)) {
+ if (!opts_setwerror(argv[0]+8, true)) {
+ con_out("unknown warning: %s\n", argv[0]+2);
+ return false;
+ }
+ }
+ else if (!strncmp(argv[0]+2, "NO_ERROR_", 9)) {
+ if (!opts_setwerror(argv[0]+11, false)) {
+ con_out("unknown warning: %s\n", argv[0]+2);
+ return false;
+ }
+ }
+ else if (!strncmp(argv[0]+2, "NO_", 3)) {
if (!opts_setwarn(argv[0]+5, false)) {
con_out("unknown warning: %s\n", argv[0]+2);
return false;
return usage();
}
+ if (OPTS_FLAG(TRUE_EMPTY_STRINGS) && OPTS_FLAG(FALSE_EMPTY_STRINGS)) {
+ con_err("-ftrue-empty-strings and -ffalse-empty-strings are mutually exclusive");
+ exit(1);
+ }
+
/* the standard decides which set of operators to use */
if (opts.standard == COMPILER_GMQCC) {
operators = c_operators;
}
}
+ if (OPTS_FLAG(TRUE_EMPTY_STRINGS))
+ type_not_instr[TYPE_STRING] = INSTR_NOT_F;
+
util_debug("COM", "starting ...\n");
/* add macros */