(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
tm/
memopt-9.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-fgnu-tm -O -fdump-tree-tmmark" } */
       3  
       4  extern int something(void) __attribute__((transaction_safe));
       5  extern void *malloc (__SIZE_TYPE__) __attribute__((malloc,transaction_safe));
       6  
       7  struct large { int foo[500]; };
       8  
       9  int f()
      10  {
      11    int *p;
      12    struct large *lp;
      13  
      14    __transaction_atomic {
      15      p = malloc (sizeof (*p) * 100);
      16      lp = malloc (sizeof (*lp) * 100);
      17  
      18      /* No instrumentation necessary; P and LP are transaction local.  */
      19      p[5] = 123;
      20      lp->foo[66] = 123;
      21  
      22      if (something())
      23        __transaction_cancel;
      24    }
      25    return p[5];
      26  }
      27  
      28  /* { dg-final { scan-tree-dump-times "ITM_WU" 0 "tmmark" } } */