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



             Bug #: 55401

           Summary: uninstrumented path in TM clones are still

                    instrumented

    Classification: Unclassified

           Product: gcc

           Version: 4.8.0

            Status: UNCONFIRMED

          Severity: minor

          Priority: P3

         Component: middle-end

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

        ReportedBy: al...@gcc.gnu.org





If a transaction appears in a TM clone, the uninstrumented path still gets

instrumented.  Example:



int george;

int ringo;



__attribute__((transaction_callable))

void q1()

{

  ringo=666;

  __transaction_atomic {

      george=999;

  }

}





Generated code:



  <bb 2>:

  _8 = 666;

  __builtin__ITM_WU4 (&ringo, _8);

  tm_state.5_11 = __builtin__ITM_beginTransaction (43);

  _12 = tm_state.5_11 & 2;

  if (_12 != 0)

    goto <bb 3>;

  else

    goto <bb 4>;



  <bb 3>:

  _13 = 999;

  __builtin__ITM_WU4 (&george, _13);

  __builtin__ITM_commitTransaction ();

  goto <bb 5>;



  <bb 4>:

  _15 = 999;

  __builtin__ITM_WU4 (&george, _15);

  __builtin__ITM_commitTransaction ();



  <bb 5>:

  return;

Reply via email to