]> granicus.if.org Git - clang/commitdiff
Fix PR 4489, a PCH crash during de-serialization.
authorDouglas Gregor <dgregor@apple.com>
Wed, 1 Jul 2009 23:29:14 +0000 (23:29 +0000)
committerDouglas Gregor <dgregor@apple.com>
Wed, 1 Jul 2009 23:29:14 +0000 (23:29 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74664 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Frontend/PCHReaderStmt.cpp
lib/Frontend/PCHWriterStmt.cpp
test/PCH/pr4489.c [new file with mode: 0644]

index d09638806169226c3971acb5e3c473cb3686c8ba..eccb53bf8189df798d75db0e05d9ba2a2e9dd78a 100644 (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();
 }
index c63c03c8823f612f10ff788eaf7c97a8aa5a112e..5235326e9ffd41dbe5161a3fe6ada12ae1a70ca6 100644 (file)
@@ -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 (file)
index 0000000..696da5b
--- /dev/null
@@ -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