Fix a minor crash-on-invalid.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55082 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp
index 29a2429..9eccd06 100644
--- a/lib/Parse/ParseExpr.cpp
+++ b/lib/Parse/ParseExpr.cpp
@@ -742,7 +742,7 @@
     ExprResult Expr = ParseAssignmentExpression();
     if (Expr.isInvalid) {
       SkipUntil(tok::r_paren);
-      return Res;
+      return ExprResult(true);
     }
 
     if (ExpectAndConsume(tok::comma, diag::err_expected_comma, "",tok::r_paren))
diff --git a/test/Parser/recovery-3.c b/test/Parser/recovery-3.c
new file mode 100644
index 0000000..40cf8cd
--- /dev/null
+++ b/test/Parser/recovery-3.c
@@ -0,0 +1,9 @@
+// RUN: clang -fsyntax-only -verify -pedantic %s
+
+// Testcase derived from PR2692
+static char *f (char * (*g) (char **, int), char **p, ...) {
+    char *s;
+    va_list v;                              // expected-error {{identifier}}
+    s = g (p, __builtin_va_arg(v, int));    // expected-error {{identifier}} expected-warning {{extension}}
+}
+