r298978 - Reverted r298976 [OpenCL] Added parsing for OpenCL vector types.

Egor Churaev via cfe-commits cfe-commits at lists.llvm.org
Tue Mar 28 22:40:45 PDT 2017


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;
-}
-




More information about the cfe-commits mailing list