sparse: Suppress sparse warnings for global variables.

sparse warns if a non-static variable with external linkage has an
initializer at first declaration.  This commit suppresses the
warnings issued when adding custom section is not supported by
compiler.

Signed-off-by: Alex Wang <alexw@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
odp-util: New function odp_flow_key_to_mask().

With megaflow support, there is API to convert mask to nlattr key based
format.  This change introduces API to do the reverse conversion.  We
leverage the existing odp_flow_key_to_flow() API to reuse the code.

Signed-off-by: Guolin Yang <gyang@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
ovs-atomic: Fix typo in comment.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ed Maste <emaste@freebsd.org>
ovs-atomic: Add native Clang implementation.

With this implementation I get warnings with Clang on GNU/Linux when the
previous patch is not applied.  This ought to make it easier to avoid
introducing new problems in the future even without building on FreeBSD.

Signed-off-by: Ben Pfaff <blp@nicira.com>
ovs-thread: Work around apparent Clang bug.

Without this patch, I get Clang warnings that I don't understand for each
of the non-static functions in dirs.c:

    warning: control reaches end of non-void function

I get the same warning for this test program with "clang -c -Wall":

    struct foo {
         const char *y;
        _Atomic(int) x;
    };

    const char *
    bar(const struct foo *fp)
    {
       return fp->y;
    }

    const char *f(void)
    {
        static struct foo f = {"xyzzy", 0};
        return bar(&f);
    }

If I change {"xyzzy", 0} to just {"xyzzy"}, the warning goes away, and the
same is true for the current patch.

Signed-off-by: Ben Pfaff <blp@nicira.com>