1 /* { dg-do compile { target { x86_64-*-linux* } } } */ 2 /* { dg-options "-fgnu-tm -O" } */ 3 4 /* Test the TM vector logging functions. */ 5 6 typedef int __attribute__((vector_size (16))) vectype; 7 extern int something(void) __attribute__((transaction_safe)); 8 extern void *malloc (__SIZE_TYPE__) __attribute__((malloc,transaction_safe)); 9 10 vectype vecky; 11 f()12vectype f() 13 { 14 vectype *p; 15 16 p = malloc (sizeof (*p) * 100); 17 18 __transaction_atomic { 19 /* p[5] is thread private, but not transaction local since the 20 malloc is outside of the transaction. We can use the logging 21 functions for this. */ 22 p[5] = vecky; 23 24 if (something()) 25 __transaction_cancel; 26 } 27 return p[5]; 28 } 29 30 /* { dg-final { scan-assembler "_ITM_LM128" } } */ 31