2003-06-30 14:58:23

by Margit Schubert-While

[permalink] [raw]
Subject: 2.5.73 compile warnings

2.5.73 + latest cset
GCC 3.3

kernel/suspend.c:294:2: warning: #warning This might be broken. We need to
somehow wait for data to reach the disk

drivers/char/vt_ioctl.c: In function `do_kdsk_ioctl':
drivers/char/vt_ioctl.c:85: warning: comparison is always false due to
limited range of data type
drivers/char/vt_ioctl.c:85: warning: comparison is always false due to
limited range of data type
drivers/char/vt_ioctl.c: In function `do_kdgkb_ioctl':
drivers/char/vt_ioctl.c:211: warning: comparison is always false due to
limited range of data type

drivers/char/keyboard.c: In function `k_fn':
drivers/char/keyboard.c:665: warning: comparison is always true due to
limited range of data type

drivers/pnp/isapnp/core.c: In function `isapnp_next_rdp':
drivers/pnp/isapnp/core.c:263: warning: `check_region' is deprecated
(declared at include/linux/ioport.h:116)


2003-06-30 15:49:05

by Andries Brouwer

[permalink] [raw]
Subject: Re: 2.5.73 compile warnings

On Mon, Jun 30, 2003 at 05:13:05PM +0200, Margit Schubert-While wrote:
> 2.5.73 + latest cset
> GCC 3.3
>
> drivers/char/vt_ioctl.c: In function `do_kdsk_ioctl':
> drivers/char/vt_ioctl.c:85: warning: comparison is always false due to
> limited range of data type
> drivers/char/vt_ioctl.c:85: warning: comparison is always false due to
> limited range of data type
> drivers/char/vt_ioctl.c: In function `do_kdgkb_ioctl':
> drivers/char/vt_ioctl.c:211: warning: comparison is always false due to
> limited range of data type
>
> drivers/char/keyboard.c: In function `k_fn':
> drivers/char/keyboard.c:665: warning: comparison is always true due to
> limited range of data type

These are checks of the "cannot happen" type, where "cannot happen"
can be seen by the compiler, so that it can optimize the tests away.

As it is now, correctness of the code can be seen locally.
If the tests are removed, a human reader must look up the values
of these constants to conclude that the code is correct.

2003-06-30 20:13:44

by Adrian Bunk

[permalink] [raw]
Subject: Re: 2.5.73 compile warnings

On Mon, Jun 30, 2003 at 06:03:19PM +0200, Andries Brouwer wrote:
> On Mon, Jun 30, 2003 at 05:13:05PM +0200, Margit Schubert-While wrote:
> > 2.5.73 + latest cset
> > GCC 3.3
> >
> > drivers/char/vt_ioctl.c: In function `do_kdsk_ioctl':
> > drivers/char/vt_ioctl.c:85: warning: comparison is always false due to
> > limited range of data type
> > drivers/char/vt_ioctl.c:85: warning: comparison is always false due to
> > limited range of data type
> > drivers/char/vt_ioctl.c: In function `do_kdgkb_ioctl':
> > drivers/char/vt_ioctl.c:211: warning: comparison is always false due to
> > limited range of data type
> >
> > drivers/char/keyboard.c: In function `k_fn':
> > drivers/char/keyboard.c:665: warning: comparison is always true due to
> > limited range of data type
>
> These are checks of the "cannot happen" type, where "cannot happen"
> can be seen by the compiler, so that it can optimize the tests away.
>
> As it is now, correctness of the code can be seen locally.
> If the tests are removed, a human reader must look up the values
> of these constants to conclude that the code is correct.

There are cases where a comparison is only on 32 bit architectures
always true/false (if longs are involved).

There are cases where a #define is set that might be set differently
under certain circumstances:

<-- snip -->

#define MAX_VALUE 10000

u8 tmp;

if (tmp > MAX_VALUE)
return -ESOMEERROR;

<-- snip -->


These are cases where the warning is just noise. But this new warning
already found several bugs, there are several places where I sent
patches for things like:

<-- snip -->

u8 i;

for (i = 0; i <= 0xFF; i++)
do_something;

<-- snip -->


In these cases the warning found an actual bug.


Is there any way to tell gcc to disable such warnings locally?


cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

2003-07-01 07:15:37

by Margit Schubert-While

[permalink] [raw]
Subject: Re: 2.5.73 compile warnings

As long as the coding is correct, I'm OK with the warnings.
Kudos to the developers/maintainers that 2.5 compiles so cleanly.
2.4 is another story. See my mail from yesterday titled
2.4.22pre2 + cset1040 compile erros/warnings.
There are hundreds of warnings (and 4 errors) which should be
checked.

Margit