(NB: I'm not suggesting to change the linkage of functions in an unnamed
namespace to internal.)

Unless specified otherwise, functions in an unnamed namespace have external
linkage. Does that mean that g++ has to export the corresponding symbol? As the
function cannot be used from another translation unit, it seems to me it is a
waste of space, and perhaps of inter-procedural optimization opportunities too.

If there is a case where it matters for the symbol to be exported, please
disregard this enhancement-request (but please provide an example as it
interests me).

The reason for this request is that I recently come across a program where
forcefully removing the export of these symbols in the object files sped up
executable linking by more than 15%. So it would provide a nice gain if GCC was
not exporting the symbols.


-- 
           Summary: Unnamed namespace and exported symbols
           Product: gcc
           Version: 4.1.2
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: guillaume dot melquiond at ens-lyon dot fr


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

Reply via email to