diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-07-01 23:29:14 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-07-01 23:29:14 +0000 |
commit | ae4df629dda13736c9e3251921b168084cd01978 (patch) | |
tree | 2b1c7bac82ceb1a7fe4a50817349749bb163e615 | |
parent | dac5bd4f15681062c2e11538d59197f9952c0703 (diff) |
Fix PR 4489, a PCH crash during de-serialization.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74664 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Frontend/PCHReaderStmt.cpp | 1 | ||||
-rw-r--r-- | lib/Frontend/PCHWriterStmt.cpp | 1 | ||||
-rw-r--r-- | test/PCH/pr4489.c | 20 |
3 files changed, 20 insertions, 2 deletions
diff --git a/lib/Frontend/PCHReaderStmt.cpp b/lib/Frontend/PCHReaderStmt.cpp index d096388061..eccb53bf81 100644 --- a/lib/Frontend/PCHReaderStmt.cpp +++ b/lib/Frontend/PCHReaderStmt.cpp @@ -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(); } diff --git a/lib/Frontend/PCHWriterStmt.cpp b/lib/Frontend/PCHWriterStmt.cpp index c63c03c882..5235326e9f 100644 --- a/lib/Frontend/PCHWriterStmt.cpp +++ b/lib/Frontend/PCHWriterStmt.cpp @@ -826,5 +826,4 @@ void PCHWriter::FlushStmts() { } StmtsToEmit.clear(); - SwitchCaseIDs.clear(); } diff --git a/test/PCH/pr4489.c b/test/PCH/pr4489.c new file mode 100644 index 0000000000..696da5bbb4 --- /dev/null +++ b/test/PCH/pr4489.c @@ -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"); +}
\ No newline at end of file |