// Positive testcase for decls in conditions.

extern "C" int printf(const char *, ...);

int up = 0;
int down = 0;

struct T
{
  int i;
  T(int j) { i = j; printf("UP\n"); up++; }
  T(const T& t) { i = t.i; printf("unwanted copy\n"); }
  ~T() { printf ("DOWN\n"); down++; }
  operator int () { return i; }
};

int main ()
{
  int t;

  if (T t = 1)
    ;

  printf ("\n");
  
  int j = 3;
  while (T t = j--)
    ;
  
  printf ("\n");
  
  j = 3;
  while (1)
    {
      T t = j--;
      if (t) continue;
      break;
    }
  
  printf ("\n");
  
  j = 3;
  for (;T t = j--;)
    ;

  printf ("\n");
  
  for (int k = 3; T t = k--;)
    ;

  printf ("\n");
  
  switch (T t = 34)
    {
    case 34:
      ;
    }

  printf ("\n");
  
  if (up == down && up == 18)
    return 0;
  else
    return 1;
}
