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