diff options
author | Chris Lattner <sabre@nondot.org> | 2008-10-26 22:38:55 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-10-26 22:38:55 +0000 |
commit | 0eec2b58678f71af6b5fcf4c439290c0d640546b (patch) | |
tree | 7563766bb9619ec97e0b8d4924ea68cc0cdcf520 /lib/Parse/ParseInit.cpp | |
parent | eccc53a0a0ed1abc7bb4c04ed9566ce0c5c63140 (diff) |
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
Diffstat (limited to 'lib/Parse/ParseInit.cpp')
-rw-r--r-- | lib/Parse/ParseInit.cpp | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/lib/Parse/ParseInit.cpp b/lib/Parse/ParseInit.cpp index 5f2dc6d8e5..84e3166473 100644 --- a/lib/Parse/ParseInit.cpp +++ b/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 |