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