// { dg-do compile { target i?86-*-* x86_64-*-* } }
// { dg-options "-fschedule-insns2 -fsel-sched-pipelining -fselective-scheduling2 -fno-exceptions -O" }

struct QBasicAtomicInt
{
  int i, j;
  bool deref ()
  {
    asm volatile ("":"=m" (i), "=qm" (j));
    return true;
  }
};

struct Data
{
  QBasicAtomicInt ref;
  void *data;
};

struct QByteArray
{
  Data * d;
  ~QByteArray ()
  {
    d->ref.deref ();
  }
};

int indexOf (unsigned);
int stat (void *, int *);
QByteArray encodeName ();

bool makeDir (unsigned len)
{
  unsigned i = 0;
  while (len)
    {
      int st;
      int pos = indexOf (i);
      QByteArray baseEncoded = encodeName ();
      if (stat (baseEncoded.d->data, &st) && stat (baseEncoded.d, &st))
        return false;
      i = pos;
    }

  return true;
}
