On Mon, 01 Oct 2012 11:03:21 +0100, Mark Brown said: > On Sun, Sep 30, 2012 at 12:15:55PM +0200, Paul Bolle wrote: > > Building regmap.o triggers this GCC warning: > > drivers/base/regmap/regmap.c: In function âregmap_raw_readâ: > > drivers/base/regmap/regmap.c:1172:6: warning: âretâ may be used > > uninitialized in this function [-Wmaybe-uninitialized] > > > > It seems 'ret' should always be set when this function returns. See, the > > else-branch can leave 'ret' uninitialized only if 'val_count' is zero. > > But if 'val_count' is zero regmap_volatile_range() will return true.
I've not dug into it that deeply - is there a way that gcc is able to intuit
this fact and use it for flow analysis? If not, it's not going to be able to
include that information in its analysis.
> > That implies that 'ret' will be set in the if-branch. ('val_count' could
> > be zero if 'val_len' is, for example, zero. That would be useless input,
> > however.)
But gcc doesn't know what "useless input" means, semantically.
> > Anyhow, initializing 'ret' to -EINVAL silences GCC and is harmless.
>
> Have you reported this bug in GCC? Their flow analyis just seems to
> keep on getting worse and worse.
I'm not convinced that it's at fault in this particular case...
pgpxWnEN9X2Ta.pgp
Description: PGP signature

