I see it. I'm reverting this patch and I'll investigate why it has happend.
2017-03-29 8:43 GMT+03:00 Dean Michael Berris <dber...@google.com>: > This seems to have broken multiple builds. > > On Wed, Mar 29, 2017 at 4:20 PM Egor Churaev via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Author: echuraev >> Date: Wed Mar 29 00:08:18 2017 >> New Revision: 298976 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=298976&view=rev >> Log: >> [OpenCL] Added parsing for OpenCL vector types. >> >> Reviewers: cfe-commits, Anastasia >> >> Reviewed By: Anastasia >> >> Subscribers: yaxunl, bader >> >> Differential Revision: https://reviews.llvm.org/D31183 >> >> Added: >> 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=298976&r1=298975&r2=298976&view=diff >> ============================================================ >> ================== >> --- cfe/trunk/include/clang/Parse/Parser.h (original) >> +++ cfe/trunk/include/clang/Parse/Parser.h Wed Mar 29 00:08:18 2017 >> @@ -1449,10 +1449,12 @@ private: >> ExprResult ParseCastExpression(bool isUnaryExpression, >> bool isAddressOfOperand, >> bool &NotCastExpr, >> - TypeCastState isTypeCast); >> + TypeCastState isTypeCast, >> + bool isVectorLiteral = false); >> ExprResult ParseCastExpression(bool isUnaryExpression, >> bool isAddressOfOperand = false, >> - TypeCastState isTypeCast = NotTypeCast); >> + TypeCastState isTypeCast = NotTypeCast, >> + bool isVectorLiteral = false); >> >> /// 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=298976&r1=298975&r2=298976&view=diff >> ============================================================ >> ================== >> --- cfe/trunk/lib/Parse/ParseExpr.cpp (original) >> +++ cfe/trunk/lib/Parse/ParseExpr.cpp Wed Mar 29 00:08:18 2017 >> @@ -473,12 +473,14 @@ Parser::ParseRHSOfBinaryExpression(ExprR >> /// >> ExprResult Parser::ParseCastExpression(bool isUnaryExpression, >> bool isAddressOfOperand, >> - TypeCastState isTypeCast) { >> + TypeCastState isTypeCast, >> + bool isVectorLiteral) { >> bool NotCastExpr; >> ExprResult Res = ParseCastExpression(isUnaryExpression, >> isAddressOfOperand, >> NotCastExpr, >> - isTypeCast); >> + isTypeCast, >> + isVectorLiteral); >> if (NotCastExpr) >> Diag(Tok, diag::err_expected_expression); >> return Res; >> @@ -694,7 +696,8 @@ class CastExpressionIdValidator : public >> ExprResult Parser::ParseCastExpression(bool isUnaryExpression, >> bool isAddressOfOperand, >> bool &NotCastExpr, >> - TypeCastState isTypeCast) { >> + TypeCastState isTypeCast, >> + bool isVectorLiteral) { >> ExprResult Res; >> tok::TokenKind SavedKind = Tok.getKind(); >> NotCastExpr = false; >> @@ -722,6 +725,9 @@ 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. >> @@ -2350,6 +2356,48 @@ 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 >> '{'. >> >> @@ -2379,10 +2427,13 @@ 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); >> + /*isTypeCast=*/IsTypeCast, >> + /*isVectorLiteral=*/true); >> if (!Result.isInvalid()) { >> Result = Actions.ActOnCastExpr(getCurScope(), OpenLoc, >> DeclaratorInfo, CastTy, >> >> Added: cfe/trunk/test/Parser/vector-cast-define.cl >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/ >> vector-cast-define.cl?rev=298976&view=auto >> ============================================================ >> ================== >> --- cfe/trunk/test/Parser/vector-cast-define.cl (added) >> +++ cfe/trunk/test/Parser/vector-cast-define.cl Wed Mar 29 00:08:18 2017 >> @@ -0,0 +1,10 @@ >> +// 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 >> > -- Best regards, Egor Churaev
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits