/* { dg-do compile } */ | |
/* { dg-options "-fgnu-tm -O2 -fdump-tree-lim2" } */ | |
/* Test that `count' is not written to unless p->data>0. */ | |
int count; | |
struct obj { | |
int data; | |
struct obj *next; | |
} *q; | |
void func() | |
{ | |
struct obj *p; | |
__transaction_atomic { | |
for (p = q; p; p = p->next) | |
if (p->data > 0) | |
count++; | |
} | |
} | |
/* { dg-final { scan-tree-dump-times "Cannot hoist conditional load of count because it is in a transaction" 1 "lim2" } } */ |