// RUN: %clang -x c-header -o %t.pch %s
// RUN: echo > %t.empty.c
// RUN: %clang -include %t -x c %t.empty.c -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");
}
