flow, conditions: handle label statements correctly
commitcb6015ff209c7475afba716a42435aee7bf665eb
authorDan Carpenter <dan.carpenter@oracle.com>
Tue, 23 Feb 2016 12:09:57 +0000 (23 15:09 +0300)
committerDan Carpenter <dan.carpenter@oracle.com>
Tue, 23 Feb 2016 12:09:57 +0000 (23 15:09 +0300)
tree0568de0cc88476e1a061885c6bd23334b0470aba
parent726fa4c3880d9bd00761d2db24668174b7b94a40
flow, conditions: handle label statements correctly

Label statements are basically if you have only one statement after a
label.  Like this:

    out:
return ret;
    }

If you have more than one statement then there is no label statement.  If
it was the end of a function like the above example, then that's fine it
was already handled correctly.  The problem comes when you have something
like:

x = ({
blah();
blah();
__end:
val;
      });

We weren't seeing the last statement and it cause subtle breakage.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch.h
smatch_conditions.c
smatch_flow.c
smatch_math.c
smatch_type.c