// 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 -

// FIXME: This test is forcibly disabled, it is flaky on the clang-i686-xp-msvc9
// buildbot.
//
// RUN: false
// XFAIL: *

// 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");
}
