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 | 3fa9239f415a5f023587cbeafca4942339878fcd (patch) | |
tree | 4ba47646f7e81d010c810ff9fd9dc917c34a56ec /clang/lib/Parse/ParseInit.cpp | |
parent | f3e58e2ebc946c5a076bd237ab4f4c1bb3d0ec0f (diff) | |
download | bcm5719-llvm-3fa9239f415a5f023587cbeafca4942339878fcd.tar.gz bcm5719-llvm-3fa9239f415a5f023587cbeafca4942339878fcd.zip |
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
Diffstat (limited to 'clang/lib/Parse/ParseInit.cpp')
-rw-r--r-- | clang/lib/Parse/ParseInit.cpp | 12 |
1 files changed, 4 insertions, 8 deletions
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 |