1 /* { dg-do compile } */ 2 /* { dg-options "-fgnu-tm -fdump-tree-tmedge -fdump-tree-tmmark" } */ 3 4 int a, b; 5 cancel1()6void __attribute((transaction_may_cancel_outer,noinline)) cancel1() 7 { 8 __transaction_cancel [[outer]]; 9 } 10 11 void foo(void)12foo(void) 13 { 14 __transaction_atomic [[outer]] { 15 a = 2; 16 __transaction_atomic { 17 b = 2; 18 cancel1(); 19 } 20 } 21 } 22 23 /* { dg-final { scan-tree-dump-times " instrumentedCode" 1 "tmedge" } } */ 24 /* { dg-final { scan-tree-dump-times "hasNoAbort" 0 "tmedge" } } */ 25 /* { dg-final { cleanup-tree-dump "tmedge" } } */ 26 /* { dg-final { cleanup-tree-dump "tmmark" } } */ 27