1 /* { dg-do compile } */ 2 /* { dg-options "-fgnu-tm -O -fdump-tree-tmedge --param tm-max-aggregate-size=1" } */ 3 4 /* Test thread-local memory optimizations: logging function. */ 5 6 struct large { int x[100]; }; 7 struct large bark(); 8 extern int test (void) __attribute__((transaction_safe)); 9 f()10int f() 11 { 12 int i = readint(); 13 struct large lala = bark(); 14 __transaction_atomic { 15 lala.x[55] = 666; 16 if (test()) 17 __transaction_cancel; 18 } 19 return lala.x[i]; 20 } 21 22 /* { dg-final { scan-tree-dump-times "ITM_LU\[0-9\] \\\(&lala.x\\\[55\\\]" 1 "tmedge" } } */ 23 /* { dg-final { cleanup-tree-dump "tmedge" } } */ 24