PR c++/81917 - ICE with void_t and partial specialization.
[official-gcc.git] / gcc / testsuite / g++.dg / opt / pr46640.C
blobb55afd4937e883a8253026b2e67fd85b5c8dbb8c
1 // { dg-do compile { target i?86-*-* x86_64-*-* } }
2 // { dg-options "-fschedule-insns2 -fsel-sched-pipelining -fselective-scheduling2 -fno-exceptions -O" }
4 struct QBasicAtomicInt
6   int i, j;
7   bool deref ()
8   {
9     asm volatile ("":"=m" (i), "=qm" (j));
10     return true;
11   }
14 struct Data
16   QBasicAtomicInt ref;
17   void *data;
20 struct QByteArray
22   Data * d;
23   ~QByteArray ()
24   {
25     d->ref.deref ();
26   }
29 int indexOf (unsigned);
30 int stat (void *, int *);
31 QByteArray encodeName ();
33 bool makeDir (unsigned len)
35   unsigned i = 0;
36   while (len)
37     {
38       int st;
39       int pos = indexOf (i);
40       QByteArray baseEncoded = encodeName ();
41       if (stat (baseEncoded.d->data, &st) && stat (baseEncoded.d, &st))
42         return false;
43       i = pos;
44     }
46   return true;