/* { dg-do compile } */ /* { dg-options "-fgnu-tm -O -fdump-tree-tmmark" } */ /* Test that `nontrxn' doesn't end up inside the transaction. */ typedef struct node { int * val; struct node *next; } node_t; node_t *next; int nontrxn1, nontrxn; static int set_remove(int * val) { int result; int * v; __transaction_relaxed { v = next->val; result = (v == val); if (result) result = 2; } return result; } void test(void *data) { extern void bark(void); if (set_remove(0)) bark(); nontrxn = 99; /* Should be outside transaction. */ } /* { dg-final { scan-tree-dump-times "_ITM_W.*nontrxn" 0 "tmmark" } } */