Trevor Saunders <tbsau...@tbsaunde.org> writes:
> On Wed, Aug 12, 2015 at 01:03:36PM -0600, Jeff Law wrote:
>> On 08/12/2015 12:57 PM, Richard Sandiford wrote:
>> >Jeff Law <l...@redhat.com> writes:
>> >>On 08/10/2015 06:05 AM, tbsaunde+...@tbsaunde.org wrote:
>> >>>From: Trevor Saunders <tbsaunde+...@tbsaunde.org>
>> >>>
>> >>>Hi,
>> >>>
>> >>>In many places gcc puts classes in the anon namespace so the
>> >>> compiler can tell
>> >>>they do not get inheritted from to enable better devirtualization.  
>> >>>However
>> >>>debugging code in the anon namespace can be a pain, and the same
>> >>> thing can be
>> >>>accomplished more directly by marking the classes as final.  When
>> >>>bootstrapping
>> >>>stage 3 should always be built in C++14 mode now, and of course
>> >>> will always be
>> >>>newer than gcc 4.7, so these classes will always be marked as final there.
>> >>>AIUI cross compilers are supposed to be built with recent gcc,
>> >>> which I would
>> >>>tend to think implies newer than 4.7, so they should also be built
>> >>> with these
>> >>>classes marked as final.  I believe that means in all important cases
>> >>>this works just as well as the anon namespace.
>> >>>
>> >>>bootstrapped + regtested on x86_64-linux-gnu, ok?
>> >>>
>> >>>Trev
>> >>>
>> >>>
>> >>>gcc/ChangeLog:
>> >>>
>> >>>2015-08-10  Trevor Saunders  <tbsau...@tbsaunde.org>
>> >>>
>> >>>  * compare-elim.c, dce.c, dse.c, gimple-ssa-isolate-paths.c,
>> >>>  gimple-ssa-strength-reduction.c, graphite.c, init-regs.c,
>> >>>  ipa-pure-const.c, ipa-visibility.c, ipa.c, mode-switching.c,
>> >>>  omp-low.c, reorg.c, sanopt.c, trans-mem.c, tree-eh.c,
>> >>>  tree-if-conv.c, tree-ssa-copyrename.c, tree-ssa-dce.c,
>> >>>  tree-ssa-dom.c, tree-ssa-dse.c, tree-ssa-forwprop.c,
>> >>>  tree-ssa-sink.c, tree-ssanames.c, tree-stdarg.c, tree-tailcall.c,
>> >>>  tree-vect-generic.c, tree.c, ubsan.c, var-tracking.c,
>> >>>  vtable-verify.c, web.c: Use GCC_FINAL instead of the anonymous
>> >>>namespace.
>> >>OK.
>> >
>> >I was hoping someone else was going to speak up since I seem
>> >to have been posting a few negative messages recently, but I think
>> >this is really a step in the wrong direction.  I think the code
>> >was using anonymous namespaces in exactly the way they were
>
> are they actually all that common?  I think gcc is the only C++ with
> which I'm familiar that uses them much.

Yeah, fair question.  I suppose working on a codebase with anonymous
namespaces day-in day-out doesn't make them more common than working
on the codebase for one day :-)  Even if it felt that way at the time...

But an internal codebase at a previous job used them.  LLVM also used them
quite a bit when I was looking after the SystemZ port (I assume still does).

Thanks,
Richard

Reply via email to