inline the decision logic that chooses between an assign expr and brace
initializer, avoiding an extra level of calls for silly things like
'int x = 4'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58206 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Parse/ParseInit.cpp b/lib/Parse/ParseInit.cpp
index 5f2dc6d..84e3166 100644
--- a/lib/Parse/ParseInit.cpp
+++ b/lib/Parse/ParseInit.cpp
@@ -169,9 +169,10 @@
 }
 
 
-/// ParseInitializer
+/// ParseBraceInitializer - Called when parsing an initializer that has a
+/// leading open brace.
+///
 ///       initializer: [C99 6.7.8]
-///         assignment-expression
 ///         '{' initializer-list '}'
 ///         '{' initializer-list ',' '}'
 /// [GNU]   '{' '}'
@@ -180,12 +181,7 @@
 ///         designation[opt] initializer
 ///         initializer-list ',' designation[opt] initializer
 ///
-Parser::ExprResult Parser::ParseInitializer() {
-  // TODO: Split this up into ParseInitializer + ParseBraceInitializer, make
-  // ParseInitializer inline so that the non-brace case is short-cut.
-  if (Tok.isNot(tok::l_brace))
-    return ParseAssignmentExpression();
-
+Parser::ExprResult Parser::ParseBraceInitializer() {
   SourceLocation LBraceLoc = ConsumeBrace();
   
   // We support empty initializers, but tell the user that they aren't using