summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseInit.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-10-26 22:38:55 +0000
committerChris Lattner <sabre@nondot.org>2008-10-26 22:38:55 +0000
commit3fa9239f415a5f023587cbeafca4942339878fcd (patch)
tree4ba47646f7e81d010c810ff9fd9dc917c34a56ec /clang/lib/Parse/ParseInit.cpp
parentf3e58e2ebc946c5a076bd237ab4f4c1bb3d0ec0f (diff)
downloadbcm5719-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.cpp12
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
OpenPOWER on IntegriCloud