Fix PR 4489, a PCH crash during de-serialization.

llvm-svn: 74664
This commit is contained in:
Douglas Gregor 2009-07-01 23:29:14 +00:00
parent 54648d867f
commit e4d00dd7f6
3 changed files with 20 additions and 2 deletions

View File

@ -1133,6 +1133,5 @@ Stmt *PCHReader::ReadStmt(llvm::BitstreamCursor &Cursor) {
StmtStack.push_back(S);
}
assert(StmtStack.size() == 1 && "Extra expressions on stack!");
SwitchCaseStmts.clear();
return StmtStack.back();
}

View File

@ -826,5 +826,4 @@ void PCHWriter::FlushStmts() {
}
StmtsToEmit.clear();
SwitchCaseIDs.clear();
}

20
clang/test/PCH/pr4489.c Normal file
View File

@ -0,0 +1,20 @@
// 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
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");
}