------- Comment #2 from tom at atoptech dot com 2009-02-12 18:10 -------
Subject: Re: -Wconversion useless
You miss the point. The only way to assign a non-constant value to a bit
field outside of a struct is using an integral variable i.e.,
struct foo
{
int a : 2;
};
void assign( struct foo v, int x )
{
v.a = x;
}
This results automatically in a warning. How do code this assignment
type-safe? There is no (bit-field) cast operator in the C or C++.
Like the "gcc" code base, our code does a lot bit-field assignments. We
no get thousands of warning using -Wconversion, this behavior makes the
option useless.
Again, compile the "gcc" code-base with "-Wconversion" and then you will
understand the problem.
Expect for bit-fields which are problematic to do potential bit-loss
(you must use with caution), you want warnings for implicit narrowing if
values, e.g., (double -> int)
void foo( int x );
...
double n;
foo(n)
The old behavior was just fine!
I'm sure many people do not even realize they are NOT getting implicit
conversions warnings anymore because they are not caught by "-Wall"
anymore. We only discovered this be tracing a bug in our code! We then
turned on "-Wconversion" only to discover thousands of warnings with no
way practical way to fix them.
Regards,
Tom Geocaris
On Thu, 2009-02-12 at 17:39 +0000, pinskia at gcc dot gnu dot org wrote:
>
> ------- Comment #1 from pinskia at gcc dot gnu dot org 2009-02-12 17:39
> -------
> Really -Wconversion is correct to warn about bit-fields because the conversion
> will lose bits.
>
>
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39170