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



             Bug #: 56712

           Summary: constuctor function is called twice

    Classification: Unclassified

           Product: gcc

           Version: 4.6.3

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: c

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: bernd.edlin...@hotmail.de





Created attachment 29713

  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29713

cnt++ is accidentally called twice at -O2 or higher



The attached test program has a constructor function

with the __attribute__((constructor)) that is split

up into two parts construct.part.0 and construct

construct.part.0 is the part after "if (xx != 0) return;"



The problem is that both are put into the .ctors section

first the construct.part.0 and then construct.

Unfortunately the construct function is called before

construct.part.0 which has the check removed.



Therefore basically the constuctor is called twice:

cnt=2 at -O2 or -O3, but cnt=1 at -O1 or less.

Reply via email to