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