flow: don't print duplicate "unreachable code" warnings
authorDan Carpenter <dan.carpenter@oracle.com>
Sat, 20 Apr 2013 11:07:15 +0000 (20 14:07 +0300)
committerDan Carpenter <dan.carpenter@oracle.com>
Sat, 20 Apr 2013 11:07:15 +0000 (20 14:07 +0300)
We don't print these warnings inside inline functions but the flag to say
if the warning had been printed or not was getting reset.  It meant that
the unreachable warning message was printed on multiple lines instead of
just the first.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch_flow.c
smatch_states.c

index 791b4da..579f695 100644 (file)
@@ -481,6 +481,9 @@ static void print_unreached(struct statement *stmt)
 {
        static int print = 1;
 
+       if (__inline_fn)
+               return;
+
        if (!__path_is_null()) {
                print = 1;
                return;
index f141f05..def9a31 100644 (file)
@@ -81,7 +81,8 @@ int unreachable(void)
        static int reset_warnings = 1;
 
        if (cur_slist) {
-               reset_warnings = 1;
+               if (!__inline_fn)
+                       reset_warnings = 1;
                return 0;
        }
 
@@ -91,7 +92,8 @@ int unreachable(void)
        /* option spammy turns on a noisier version of this */
        if (reset_warnings && !option_spammy)
                sm_msg("info: ignoring unreachable code.");
-       reset_warnings = 0;
+       if (!__inline_fn)
+               reset_warnings = 0;
        return 1;
 }