diff options
author | Egor Churaev <egor.churaev@gmail.com> | 2017-03-29 05:40:45 +0000 |
---|---|---|
committer | Egor Churaev <egor.churaev@gmail.com> | 2017-03-29 05:40:45 +0000 |
commit | d481ee522f403a21e1b7b761f5240434b140e7a9 (patch) | |
tree | e54d074e2e9ef1b7f88321c610d4658c67f7b84a /lib/Parse | |
parent | 51f8b6a982dab8c021849d346865c075c0fd000d (diff) |
Reverted r298976 [OpenCL] Added parsing for OpenCL vector types.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@298978 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse')
-rw-r--r-- | lib/Parse/ParseExpr.cpp | 59 |
1 files changed, 4 insertions, 55 deletions
diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp index e1439d6378..4dcdfbf993 100644 --- a/lib/Parse/ParseExpr.cpp +++ b/lib/Parse/ParseExpr.cpp @@ -473,14 +473,12 @@ Parser::ParseRHSOfBinaryExpression(ExprResult LHS, prec::Level MinPrec) { /// ExprResult Parser::ParseCastExpression(bool isUnaryExpression, bool isAddressOfOperand, - TypeCastState isTypeCast, - bool isVectorLiteral) { + TypeCastState isTypeCast) { bool NotCastExpr; ExprResult Res = ParseCastExpression(isUnaryExpression, isAddressOfOperand, NotCastExpr, - isTypeCast, - isVectorLiteral); + isTypeCast); if (NotCastExpr) Diag(Tok, diag::err_expected_expression); return Res; @@ -696,8 +694,7 @@ class CastExpressionIdValidator : public CorrectionCandidateCallback { ExprResult Parser::ParseCastExpression(bool isUnaryExpression, bool isAddressOfOperand, bool &NotCastExpr, - TypeCastState isTypeCast, - bool isVectorLiteral) { + TypeCastState isTypeCast) { ExprResult Res; tok::TokenKind SavedKind = Tok.getKind(); NotCastExpr = false; @@ -725,9 +722,6 @@ ExprResult Parser::ParseCastExpression(bool isUnaryExpression, Res = ParseParenExpression(ParenExprType, false/*stopIfCastExr*/, isTypeCast == IsTypeCast, CastTy, RParenLoc); - if (isVectorLiteral) - return Res; - switch (ParenExprType) { case SimpleExpr: break; // Nothing else to do. case CompoundStmt: break; // Nothing else to do. @@ -2356,48 +2350,6 @@ Parser::ParseParenExpression(ParenParseOption &ExprType, bool stopIfCastExpr, return ParseCompoundLiteralExpression(Ty.get(), OpenLoc, RParenLoc); } - if (Tok.is(tok::l_paren)) { - // This could be OpenCL vector Literals - if (getLangOpts().OpenCL) - { - TypeResult Ty; - { - InMessageExpressionRAIIObject InMessage(*this, false); - Ty = Actions.ActOnTypeName(getCurScope(), DeclaratorInfo); - } - if(Ty.isInvalid()) - { - return ExprError(); - } - QualType QT = Ty.get().get().getCanonicalType(); - if (QT->isVectorType()) - { - // We parsed '(' vector-type-name ')' followed by '(' - - // Parse the cast-expression that follows it next. - // isVectorLiteral = true will make sure we don't parse any - // Postfix expression yet - Result = ParseCastExpression(/*isUnaryExpression=*/false, - /*isAddressOfOperand=*/false, - /*isTypeCast=*/IsTypeCast, - /*isVectorLiteral=*/true); - - if (!Result.isInvalid()) { - Result = Actions.ActOnCastExpr(getCurScope(), OpenLoc, - DeclaratorInfo, CastTy, - RParenLoc, Result.get()); - } - - // After we performed the cast we can check for postfix-expr pieces. - if (!Result.isInvalid()) { - Result = ParsePostfixExpressionSuffix(Result); - } - - return Result; - } - } - } - if (ExprType == CastExpr) { // We parsed '(' type-name ')' and the thing after it wasn't a '{'. @@ -2427,13 +2379,10 @@ Parser::ParseParenExpression(ParenParseOption &ExprType, bool stopIfCastExpr, } // Parse the cast-expression that follows it next. - // isVectorLiteral = true will make sure we don't parse any - // Postfix expression yet // TODO: For cast expression with CastTy. Result = ParseCastExpression(/*isUnaryExpression=*/false, /*isAddressOfOperand=*/false, - /*isTypeCast=*/IsTypeCast, - /*isVectorLiteral=*/true); + /*isTypeCast=*/IsTypeCast); if (!Result.isInvalid()) { Result = Actions.ActOnCastExpr(getCurScope(), OpenLoc, DeclaratorInfo, CastTy, |