Critical behavioral change between g++-4.4/g++-4.5 and g++-4.6 ?

Emmanuel Fleury fleury@labri.fr
Sun Aug 21 12:09:00 GMT 2011


Hi,

On 08/21/2011 12:48 PM, Marc Glisse wrote:
> Wrong mailing list, you are looking for gcc-help.

Ok, sorry for that.

But, I looked thoroughly to the kyua code and I didn't see anything 
wrong (even if I might have missed something, I admit it. I'm not a C++ 
god).

In fact, after a quick look at the g++-4.6 changelog, I found the 
following item:

« * When an extern declaration within a function does not match a 
declaration in the enclosing context, G++ now properly declares the name 
within the namespace of the function rather than the namespace which was 
open just before the function definition (c++/43145). »

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

My work hypothesis for now is that the fix of this issue has changed 
something in the way namespaces are handled

I think this issue is related to this change and that a bug has been 
introduced in the compiler when c++/43145 has been fixed.

But, this is only an hypothesis.

>  From the code. The definition (not just declaration) of templates
> should be available everywhere they are used (or you can manually force
> instantiation in one translation unit and inhibit it in the others).

And, could you spot the change that occurred in g++ between g++-4.5 and 
g++-4.6 that changed its behavior ?

Why was it possible before and not anymore now ?

>> (sorry I didn't manage to circumvent the problem to a small piece of
>> code),
>
> Er, what did you try?

I am currently trying to do so and I didn't succeed to better understand 
the problem by now.

My guess is that it is related to the namespace handling and I am 
working in this direction. But, I have no more to say (except my 
intuition that it might be related) and the code of kyua is new to me, 
so it does take some time.

Regards
-- 
Emmanuel Fleury

If you can not measure it, you can not improve it.
   -- Lord Kelvin



More information about the Gcc mailing list