[Bug middle-end/55401] New: uninstrumented path in TM clones are still instrumented

aldyh at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Nov 19 21:51:00 GMT 2012


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: unassigned@gcc.gnu.org
        ReportedBy: aldyh@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;



More information about the Gcc-bugs mailing list