Re: 2.6.14 assorted warnings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Oct 30, 2005 at 10:15:31PM +0000, Alan Cox wrote:
> gcc is a *LOT* smarter than you give it credit for. It will not warn for
> cases where it isn't able to tell how foo is used passed with &foo. It
> will warn for cases where it can

static inline __attribute__((always_inline)) int bar(int n, int *idx)
{
        if (n != 1) 
                return 0; 
        *idx = 1;
        return 1;  
}
void baz(int *v, int n)
{
        int idx;
        int p = bar(n, &idx);
        if (__builtin_expect(!p, 0))
                return; 
        *v |= idx;
}

and try gcc -Wall on that.  Watch it warn about idx being possibly
uninitialized.  Replace __builtin_expect(!p, 0) with !p and see
the warning go away.  That, BTW, is a trimmed-down source of bogus
warning in bio.c.  And a lot of its analogs all over the tree.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux