From 3fa9239f415a5f023587cbeafca4942339878fcd Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 26 Oct 2008 22:38:55 +0000 Subject: 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'. llvm-svn: 58206 --- clang/lib/Parse/ParseInit.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'clang/lib/Parse/ParseInit.cpp') diff --git a/clang/lib/Parse/ParseInit.cpp b/clang/lib/Parse/ParseInit.cpp index 5f2dc6d8e5b..84e31664735 100644 --- a/clang/lib/Parse/ParseInit.cpp +++ b/clang/lib/Parse/ParseInit.cpp @@ -169,9 +169,10 @@ ParseInitializerWithPotentialDesignator(InitListDesignations &Designations, } -/// 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 @@ ParseInitializerWithPotentialDesignator(InitListDesignations &Designations, /// 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 -- cgit v1.2.3