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

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-03-30 
01:39:59 UTC ---
A better understanding of what happens.
Arrays in both the C and C++ front-end are treated in an interesting way.  The
array's main variant is the array of the element types' main variant.
That is the const char[4]'s main variant is char[4].  But when we doing the
folding for printf to puts, this no longer holds for that const char[4] type.  
So when we do the merging of the type const char[4] for the first TU to the
second one, we have created an array type with a main variant which is
different from what the C/C++ front-end produces.
And then comes the last TU, where we have this main variant that is different. 
So we warn that char and const char are different, even if we don't care about
them being different variants because the front-end does not.

4.7 fixes it by using types_compatible instead of gimple_types_compatible.  Now
we still have this main variant issue that is latent in 4.7 and above.  Should
we fix that issue or just ignore it and how it does not matter?

Reply via email to