Author: echuraev Date: Wed Mar 29 00:40:45 2017 New Revision: 298978 URL: http://llvm.org/viewvc/llvm-project?rev=298978&view=rev Log: Reverted r298976 [OpenCL] Added parsing for OpenCL vector types.
Removed: cfe/trunk/test/Parser/vector-cast-define.cl Modified: cfe/trunk/include/clang/Parse/Parser.h cfe/trunk/lib/Parse/ParseExpr.cpp Modified: cfe/trunk/include/clang/Parse/Parser.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Parse/Parser.h?rev=298978&r1=298977&r2=298978&view=diff ============================================================================== --- cfe/trunk/include/clang/Parse/Parser.h (original) +++ cfe/trunk/include/clang/Parse/Parser.h Wed Mar 29 00:40:45 2017 @@ -1449,12 +1449,10 @@ private: ExprResult ParseCastExpression(bool isUnaryExpression, bool isAddressOfOperand, bool &NotCastExpr, - TypeCastState isTypeCast, - bool isVectorLiteral = false); + TypeCastState isTypeCast); ExprResult ParseCastExpression(bool isUnaryExpression, bool isAddressOfOperand = false, - TypeCastState isTypeCast = NotTypeCast, - bool isVectorLiteral = false); + TypeCastState isTypeCast = NotTypeCast); /// Returns true if the next token cannot start an expression. bool isNotExpressionStart(); Modified: cfe/trunk/lib/Parse/ParseExpr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseExpr.cpp?rev=298978&r1=298977&r2=298978&view=diff ============================================================================== --- cfe/trunk/lib/Parse/ParseExpr.cpp (original) +++ cfe/trunk/lib/Parse/ParseExpr.cpp Wed Mar 29 00:40:45 2017 @@ -473,14 +473,12 @@ Parser::ParseRHSOfBinaryExpression(ExprR /// 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 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(b 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(ParenParseO 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(ParenParseO } // 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, Removed: cfe/trunk/test/Parser/vector-cast-define.cl URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/vector-cast-define.cl?rev=298977&view=auto ============================================================================== --- cfe/trunk/test/Parser/vector-cast-define.cl (original) +++ cfe/trunk/test/Parser/vector-cast-define.cl (removed) @@ -1,10 +0,0 @@ -// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -// expected-no-diagnostics - -typedef int int3 __attribute__((ext_vector_type(3))); - -void test() -{ - int index = (int3)(1, 2, 3).x * (int3)(3, 2, 1).y; -} - _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits