Compilling:
 ./g++ -O2 ~/mozalloc.ii  -S -m32
gives me:
        .type   _GLOBAL__I_moz_free, @function
_GLOBAL__I_moz_free:
.LFB58:
        .cfi_startproc
        rep
        ret
        .cfi_endproc
.LFE58:
        .size   _GLOBAL__I_moz_free, .-_GLOBAL__I_moz_free
        .section        .ctors,"aw",@progbits
        .align 4
        .long   _GLOBAL__I_moz_free
        .local  _ZN7mozillaL8fallibleE
        .comm   _ZN7mozillaL8fallibleE,1,1

I.e. an empty constructor function that can be eliminated and also 
local var   _ZN7mozillaL8fallibleE that is not used at all.
The reason is that constructor in .optimized stage looks like:
(static initializers for /mozilla-central/memory/mozalloc/mozalloc.cpp) ()
{
<bb 2>:
  fallible = {};
  return;

}

that later expands to nothing.  If we optimized this away during early opts I
already have patch that makes it easy to eliminate all global ctors/dtors that
are known to be pure.

Honza


-- 
           Summary: Stores expanding to no RTL not removed by tree
                    optimizers, Empty ctors/dtors not eliminated
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hubicka at gcc dot gnu dot org


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

Reply via email to