Author: dingfei Date: 2023-08-08T10:23:56+08:00 New Revision: df21f9fc037329ae05ff4640d9172364bb9ef6ed
URL: https://github.com/llvm/llvm-project/commit/df21f9fc037329ae05ff4640d9172364bb9ef6ed DIFF: https://github.com/llvm/llvm-project/commit/df21f9fc037329ae05ff4640d9172364bb9ef6ed.diff LOG: [clang][ASTImporter] Add import of 'ConvertVectorExpr' Add import of ConvertVectorExpr. Reviewed By: balazske Differential Revision: https://reviews.llvm.org/D157249 Added: Modified: clang/lib/AST/ASTImporter.cpp clang/unittests/AST/ASTImporterTest.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp index c64b92c5c830e4..6da39ca2778bd1 100644 --- a/clang/lib/AST/ASTImporter.cpp +++ b/clang/lib/AST/ASTImporter.cpp @@ -616,6 +616,7 @@ namespace clang { ExpectedStmt VisitSourceLocExpr(SourceLocExpr *E); ExpectedStmt VisitVAArgExpr(VAArgExpr *E); ExpectedStmt VisitChooseExpr(ChooseExpr *E); + ExpectedStmt VisitConvertVectorExpr(ConvertVectorExpr *E); ExpectedStmt VisitShuffleVectorExpr(ShuffleVectorExpr *E); ExpectedStmt VisitGNUNullExpr(GNUNullExpr *E); ExpectedStmt VisitGenericSelectionExpr(GenericSelectionExpr *E); @@ -7051,6 +7052,21 @@ ExpectedStmt ASTNodeImporter::VisitChooseExpr(ChooseExpr *E) { ToRParenLoc, CondIsTrue); } +ExpectedStmt ASTNodeImporter::VisitConvertVectorExpr(ConvertVectorExpr *E) { + Error Err = Error::success(); + auto *ToSrcExpr = importChecked(Err, E->getSrcExpr()); + auto ToRParenLoc = importChecked(Err, E->getRParenLoc()); + auto ToBuiltinLoc = importChecked(Err, E->getBuiltinLoc()); + auto ToType = importChecked(Err, E->getType()); + auto *ToTSI = importChecked(Err, E->getTypeSourceInfo()); + if (Err) + return std::move(Err); + + return new (Importer.getToContext()) + ConvertVectorExpr(ToSrcExpr, ToTSI, ToType, E->getValueKind(), + E->getObjectKind(), ToBuiltinLoc, ToRParenLoc); +} + ExpectedStmt ASTNodeImporter::VisitShuffleVectorExpr(ShuffleVectorExpr *E) { Error Err = Error::success(); auto ToRParenLoc = importChecked(Err, E->getRParenLoc()); diff --git a/clang/unittests/AST/ASTImporterTest.cpp b/clang/unittests/AST/ASTImporterTest.cpp index 667e94521da131..9094ff4f25e7be 100644 --- a/clang/unittests/AST/ASTImporterTest.cpp +++ b/clang/unittests/AST/ASTImporterTest.cpp @@ -1306,6 +1306,29 @@ TEST_P(ASTImporterOptionSpecificTestBase, ImportChooseExpr) { ToChooseExpr->isConditionDependent()); } +TEST_P(ASTImporterOptionSpecificTestBase, ImportConvertVectorExpr) { + Decl *From, *To; + std::tie(From, To) = getImportedDecl( + "typedef double v4double __attribute__((__vector_size__(32)));" + "typedef float v4float __attribute__((__vector_size__(16)));" + "v4float vf;" + "void declToImport() { (void)__builtin_convertvector(vf, v4double); }", + Lang_CXX03, "", Lang_CXX03); + + auto ToResults = + match(convertVectorExpr().bind("convert"), To->getASTContext()); + auto FromResults = + match(convertVectorExpr().bind("convert"), From->getASTContext()); + + const ConvertVectorExpr *FromConvertVectorExpr = + selectFirst<ConvertVectorExpr>("convert", FromResults); + ASSERT_TRUE(FromConvertVectorExpr); + + const ConvertVectorExpr *ToConvertVectorExpr = + selectFirst<ConvertVectorExpr>("convert", ToResults); + ASSERT_TRUE(ToConvertVectorExpr); +} + TEST_P(ASTImporterOptionSpecificTestBase, ImportGenericSelectionExpr) { Decl *From, *To; std::tie(From, To) = getImportedDecl( _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits