1 /* { dg-do compile } */
2 /* { dg-options "-fgnu-tm -O2 -fdump-tree-lim1" } */
3
4 /* Test that `count' is not written to unless p->data>0. */
5
6 int count;
7
8 struct obj {
9 int data;
10 struct obj *next;
11 } *q;
12
func()13 void func()
14 {
15 struct obj *p;
16 __transaction_atomic {
17 for (p = q; p; p = p->next)
18 if (p->data > 0)
19 count++;
20 }
21 }
22
23 /* { dg-final { scan-tree-dump-times "Cannot hoist conditional load of count because it is in a transaction" 1 "lim1" } } */
24 /* { dg-final { cleanup-tree-dump "lim1" } } */
25