1 // { dg-do compile { target x86_64-*-* } }
2 // { dg-options "-fschedule-insns2 -fsel-sched-pipelining -fselective-scheduling2 -fno-exceptions -O" }
3 
4 struct QBasicAtomicInt
5 {
6   int i, j;
derefQBasicAtomicInt7   bool deref ()
8   {
9     asm volatile ("":"=m" (i), "=qm" (j));
10   }
11 };
12 
13 struct Data
14 {
15   QBasicAtomicInt ref;
16   void *data;
17 };
18 
19 struct QByteArray
20 {
21   Data * d;
~QByteArrayQByteArray22   ~QByteArray ()
23   {
24     d->ref.deref ();
25   }
26 };
27 
28 int indexOf (unsigned);
29 int stat (void *, int *);
30 QByteArray encodeName ();
31 
makeDir(unsigned len)32 bool makeDir (unsigned len)
33 {
34   unsigned i = 0;
35   while (len)
36     {
37       int st;
38       int pos = indexOf (i);
39       QByteArray baseEncoded = encodeName ();
40       if (stat (baseEncoded.d->data, &st) && stat (baseEncoded.d, &st))
41         return false;
42       i = pos;
43     }
44 }
45