Imported Upstream version 4.8.1
[platform/upstream/gcc48.git] / gcc / testsuite / gcc.dg / tm / reg-promotion.c
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
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" } } */