diff --git a/include/clang/Parse/Parser.h b/include/clang/Parse/Parser.h
index 9cc5c9c..11eb362 100644
--- a/include/clang/Parse/Parser.h
+++ b/include/clang/Parse/Parser.h
@@ -690,6 +690,10 @@
                                         TypeTy *&CastTy,
                                         SourceLocation &RParenLoc);
   
+  OwningExprResult ParseCompoundLiteralExpression(TypeTy *Ty,
+                                                  SourceLocation LParenLoc,
+                                                  SourceLocation RParenLoc);
+  
   OwningExprResult ParseStringLiteralExpression();
 
   //===--------------------------------------------------------------------===//
diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp
index c784934..12ba001 100644
--- a/lib/Parse/ParseExpr.cpp
+++ b/lib/Parse/ParseExpr.cpp
@@ -1239,14 +1239,8 @@
       MatchRHSPunctuation(tok::r_paren, OpenLoc);
 
     if (Tok.is(tok::l_brace)) {
-      if (!getLang().C99)   // Compound literals don't exist in C90.
-        Diag(OpenLoc, diag::ext_c99_compound_literal);
-      Result = ParseInitializer();
       ExprType = CompoundLiteral;
-      if (!Result.isInvalid() && !Ty.isInvalid())
-        Result = Actions.ActOnCompoundLiteral(OpenLoc, Ty.get(), RParenLoc,
-                                              move(Result));
-      return move(Result);
+      return ParseCompoundLiteralExpression(Ty.get(), OpenLoc, RParenLoc);
     }
 
     if (ExprType == CastExpr) {
@@ -1294,6 +1288,26 @@
   return move(Result);
 }
 
+/// ParseCompoundLiteralExpression - We have parsed the parenthesized type-name
+/// and we are at the left brace.
+///
+///       postfix-expression: [C99 6.5.2]
+///         '(' type-name ')' '{' initializer-list '}'
+///         '(' type-name ')' '{' initializer-list ',' '}'
+///
+Parser::OwningExprResult
+Parser::ParseCompoundLiteralExpression(TypeTy *Ty,
+                                       SourceLocation LParenLoc,
+                                       SourceLocation RParenLoc) {
+  assert(Tok.is(tok::l_brace) && "Not a compound literal!");
+  if (!getLang().C99)   // Compound literals don't exist in C90.
+    Diag(LParenLoc, diag::ext_c99_compound_literal);
+  OwningExprResult Result = ParseInitializer();
+  if (!Result.isInvalid() && Ty)
+    return Actions.ActOnCompoundLiteral(LParenLoc, Ty, RParenLoc, move(Result));
+  return move(Result);
+}
+
 /// ParseStringLiteralExpression - This handles the various token types that
 /// form string literals, and also handles string concatenation [C99 5.1.1.2,
 /// translation phase #6].
