On 09/21/2013 03:16 PM, Kenneth Graunke wrote:
> On 09/20/2013 06:52 PM, Eric Anholt wrote:
>> This gives the compiler the chance to inline and not export class symbols
>> even in the absence of LTO.  Saves about 60kb on disk.
> 
> This is probably worth doing.
> Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>
> 
> Another important reason for doing this is that it avoids name
> collisions.  By default, classes have external linkage, which means that
> if you compile two files together that both define classes with the same
> name, bad things happen.  You might get link errors, or it might just
> randomly link code against the wrong one, with no messages whatsoever.
> 
> See commit 5cadb3ef7e6c1a67c45b0fdb2b0c2c1a369a97d8 for a bit of history
> where this was actually happening, and we had real bugs as a result.
> 
> However, this is also extremely irritating: it prevents you from doing:
> 
> (gdb) break builtin_builder::create_shader
> 
> Instead, you have to do:
> 
> (gdb) break (anonymous namespace)::builtin_builder::create_shader

Oof.  Should we avoid the anonymous name space in debug builds?  Hmm...
that seems pretty awful too.

> I'm having a really hard time believing that gdb doesn't have a
> better/shorter way of doing this, but I sure can't find one.
> 
> If all else fails, you can always resort to line numbers:
> (gdb) break builtin_functions.cpp:599
> 
> Apparently, debugging with anonymous namespaces on MSVC is even worse.
> 
> The lack of 'static' for forcing internal linkage on classes is simply
> maddening.
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to