This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/34198] -Wconversion gives apparent erroneous warning with g++ 4.3-20071109



------- Comment #4 from manu at gcc dot gnu dot org  2007-11-22 22:43 -------
(In reply to comment #3)
> IMHO, the explicit casts (static_cast or function-style) should suppress the
> warnings.

That is not the problem. The explicit casts suppress the warnings for the
implicit conversion that occurs in the assignment. However, the C/C++
front-ends create an additional implicit conversion that is applied to 'b' and
that I don't see how it can be avoided.

See that if you try with:
void f(const unsigned char b)
{
 unsigned char c = b & 0xff;
}

you get two warnings:

test.C:3: warning: conversion to â??unsigned charâ?? from â??intâ?? may alter
its value
test.C:3: warning: conversion to â??unsigned charâ?? from â??intâ?? may alter
its value

Also if you try:

void f(const unsigned char b)
{
  if (b & 0xff) {
    return;
  }
}

you still get a warning!

test.C:3: warning: conversion of â??(int)bâ?? to â??unsigned charâ?? from
â??intâ?? may alter its value

This also affects the C front-end since the code is shared and they seem to do
exactly the same thing. Perhaps convert_and_check is called in a place where it
shouldn't be called. Or perhaps something is building '(int)b' when it should
just leave 'b' alone. Any ideas?


-- 

manu at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2007-11-22 22:43:19
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34198


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]