Accept -Wno-all, -Wno-extra and -Wno-unused like GCC.
authorChristoph Mallon <christoph.mallon@gmx.de>
Sat, 15 Dec 2007 15:39:51 +0000 (15:39 +0000)
committerChristoph Mallon <christoph.mallon@gmx.de>
Sat, 15 Dec 2007 15:39:51 +0000 (15:39 +0000)
[r18767]

warning.c
warning.h

index 212a337..c149d94 100644 (file)
--- a/warning.c
+++ b/warning.c
@@ -21,70 +21,17 @@ warning_t warning = {
        .unused_function               = false,
        .unused_label                  = false,
        .unused_parameter              = false,
-       .unused_variable               = false,
-       .unused_value                  = true
+       .unused_value                  = true,
+       .unused_variable               = false
 };
 
-/**
- * Switch on options for -Wall.
- */
-static void set_all_options(void) {
-       warning.char_subscripts               = true;
-       warning.check_format                  = true;
-       warning.empty_statement               = true;
-       /* warning.fatal_errors */
-       /* warning.float_equal */
-       warning.implicit_function_declaration = true;
-       warning.implicit_int                  = true;
-       warning.main                          = true;
-       /* warning.missing_declarations */
-       /* warning.missing_prototypes */
-       warning.redundant_decls               = true;
-       /* warning.s_are_errors */
-       warning.strict_prototypes             = true;
-       warning.switch_default                = true;
-       warning.unknown_pragmas               = true;
-       warning.unused_function               = true;
-       warning.unused_label                  = true;
-       warning.unused_parameter              = true;
-       warning.unused_variable               = true;
-       warning.unused_value                  = true;
-}
-
-/**
- * Switch on options for -Wunused.
- */
-static void set_unused_options(void) {
-       warning.unused_function               = true;
-       warning.unused_label                  = true;
-       warning.unused_parameter              = true;
-       warning.unused_variable               = true;
-       warning.unused_value                  = true;
-}
-
-/**
- * Switch on options for -Wextra.
- */
-static void set_extra_options(void) {
-}
-
 void set_warning_opt(const char *const opt)
 {
        const char* s = opt;
 
        bool state = true;
-       if (strcmp(s, "all") == 0) {
-               set_all_options();
-               return;
-       } else if (strcmp(s, "extra") == 0) {
-               set_extra_options();
-               return;
-       } else if (strcmp(s, "unused") == 0) {
-               set_unused_options();
-               return;
-       }
 
-       /* no- modifier */
+       /* "no-" prefix */
        if (s[0] == 'n' && s[1] == 'o' && s[2] == '-') {
                s += 3;
                state = false;
@@ -94,9 +41,36 @@ void set_warning_opt(const char *const opt)
 #define OPTX(x)   else if (strcmp(s, x) == 0)
 #define SET(y)    warning.y = state;
 #define OPT(x, y) OPTX(x) SET(y)
+       OPTX("all") {
+               SET(char_subscripts)
+               SET(check_format)
+               SET(empty_statement)
+               SET(implicit_function_declaration)
+               SET(implicit_int)
+               SET(main)
+               SET(redundant_decls)
+               SET(strict_prototypes)
+               SET(switch_default)
+               SET(unknown_pragmas)
+               SET(unused_function)
+               SET(unused_label)
+               SET(unused_parameter)
+               SET(unused_value)
+               SET(unused_variable)
+       }
        OPT("char-subscripts",               char_subscripts)
        OPT("empty-statement",               empty_statement)
        OPT("error",                         s_are_errors)
+       OPTX("extra") {
+               /* TODO */
+               // TODO SET(function_end_without_return)
+               SET(empty_statement)
+               // TODO SET(incomplete_aggregate_init)
+               // TODO SET(pointless_comparison)
+               // TODO SET(sign_compare)
+               SET(unused_parameter)
+               SET(unused_value)
+       }
        OPT("fatal-errors",                  fatal_errors)
        OPT("float-equal",                   float_equal)
        OPT("format",                        check_format)
@@ -117,16 +91,18 @@ void set_warning_opt(const char *const opt)
        OPT("unused-label",                  unused_label)
        OPT("unused-parameter",              unused_parameter)
        OPT("unused-variable",               unused_variable)
-#if 0
        OPTX("unused") {
                SET(unused_function)
                SET(unused_label)
                SET(unused_parameter)
-               SET(unused_variable)
                SET(unused_value)
+               SET(unused_variable)
        }
-#endif
+       OPT("unused-function",               unused_function)
+       OPT("unused-label",                  unused_label)
+       OPT("unused-parameter",              unused_parameter)
        OPT("unused-value",                  unused_value)
+       OPT("unused-variable",               unused_variable)
 #undef OPT
 #undef SET
 #undef OPT_X
index fb82953..d45c460 100644 (file)
--- a/warning.h
+++ b/warning.h
@@ -76,8 +76,8 @@ typedef struct warning_t {
        bool unused_function:1;               /**< Warn whenever a static function is declared but not defined or a non-inline static function is unused */
        bool unused_label:1;                  /**< Warn whenever a label is declared but not used */
        bool unused_parameter:1;              /**< Warn whenever a function parameter is unused aside from its declaration */
-       bool unused_variable:1;               /**< Warn whenever a local variable or non-constant static variable is unused aside from its declaration */
        bool unused_value:1;                  /**< Warn whenever a statement computes a result that is explicitly not used */
+       bool unused_variable:1;               /**< Warn whenever a local variable or non-constant static variable is unused aside from its declaration */
 #if 0 // TODO
        bool write_strings:1;                 /**< Give string constants the type 'const char[LENGTH]' so that copying the address of one into a 'char *' pointer will get a warning */
 #endif