[cfe-commits] r58206 - in /cfe/trunk: include/clang/Parse/Parser.h lib/Parse/ParseInit.cpp

Chris Lattner sabre at nondot.org
Sun Oct 26 15:38:55 PDT 2008


Author: lattner
Date: Sun Oct 26 17:38:55 2008
New Revision: 58206

URL: http://llvm.org/viewvc/llvm-project?rev=58206&view=rev
Log:
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'.


Modified:
    cfe/trunk/include/clang/Parse/Parser.h
    cfe/trunk/lib/Parse/ParseInit.cpp

Modified: cfe/trunk/include/clang/Parse/Parser.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Parse/Parser.h?rev=58206&r1=58205&r2=58206&view=diff

==============================================================================
--- cfe/trunk/include/clang/Parse/Parser.h (original)
+++ cfe/trunk/include/clang/Parse/Parser.h Sun Oct 26 17:38:55 2008
@@ -479,7 +479,17 @@
 
   //===--------------------------------------------------------------------===//
   // C99 6.7.8: Initialization.
-  ExprResult ParseInitializer();
+  
+  /// ParseInitializer
+  ///       initializer: [C99 6.7.8]
+  ///         assignment-expression
+  ///         '{' ...
+  ExprResult ParseInitializer() {
+    if (Tok.isNot(tok::l_brace))
+      return ParseAssignmentExpression();
+    return ParseBraceInitializer();
+  }
+  ExprResult ParseBraceInitializer();
   ExprResult ParseInitializerWithPotentialDesignator(InitListDesignations &D,
                                                      unsigned InitNum);
   

Modified: cfe/trunk/lib/Parse/ParseInit.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseInit.cpp?rev=58206&r1=58205&r2=58206&view=diff

==============================================================================
--- cfe/trunk/lib/Parse/ParseInit.cpp (original)
+++ cfe/trunk/lib/Parse/ParseInit.cpp Sun Oct 26 17:38:55 2008
@@ -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





More information about the cfe-commits mailing list