// RUN: clang -x c-header -o %t.pch %s &&
// RUN: clang -include %t -x c /dev/null -emit-llvm -S -o -
// PR 4489: Crash with PCH
// PR 4492: Crash with PCH (round two)
// PR 4509: Crash with PCH (round three)
typedef struct _IO_FILE FILE;
extern int fprintf (struct _IO_FILE *__restrict __stream,
                    __const char *__restrict __format, ...);

int x(void)
{
  switch (1) {
    case 2: ;
      int y = 0;
  }
}

void y(void) {
  extern char z;
  fprintf (0, "a");
}

struct y0 { int i; } y0[1] = {};

void x0(void)
{
  extern char z0;
  fprintf (0, "a");
}

void x1(void)
{
  fprintf (0, "asdf");
}

void y1(void)
{
  extern char e;
  fprintf (0, "asdf");
}