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

           Summary: [trans-mem] regular function used instead of clone in
                    a transaction
           Product: gcc
           Version: trans-mem
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: patrick.marl...@gmail.com
                CC: r...@gcc.gnu.org, al...@gcc.gnu.org


Created attachment 23631
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23631
not so big testcase.

In a relaxed transaction, some functions (stl? template?) in an transaction
doesn't call the clone version (not in an irrevocable mode: neither attribute
doesGoIrrevocable nor ITM_changeTransactionMode).

You can verify this in the function stepDestroyBuildings
(_ZL20stepDestroyBuildingsi) in Team.cpp (from glob2, kind of testcase
attached), the function _ZNSt4listIP8BuildingSaIS1_EE5beginEv is called
directly (not the clone, no changeTransactionMode) even if in a transaction.

I had a quick look and the clone function exists but the call seems not be
replaced. It seems to happen when one transaction is followed by another one
(at least related).

Patrick Marlier.

Reply via email to