Skip to content

Commit df21f9f

Browse files
committed
[clang][ASTImporter] Add import of 'ConvertVectorExpr'
Add import of ConvertVectorExpr. Reviewed By: balazske Differential Revision: https://reviews.llvm.org/D157249
1 parent db92fb8 commit df21f9f

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

clang/lib/AST/ASTImporter.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,7 @@ namespace clang {
616616
ExpectedStmt VisitSourceLocExpr(SourceLocExpr *E);
617617
ExpectedStmt VisitVAArgExpr(VAArgExpr *E);
618618
ExpectedStmt VisitChooseExpr(ChooseExpr *E);
619+
ExpectedStmt VisitConvertVectorExpr(ConvertVectorExpr *E);
619620
ExpectedStmt VisitShuffleVectorExpr(ShuffleVectorExpr *E);
620621
ExpectedStmt VisitGNUNullExpr(GNUNullExpr *E);
621622
ExpectedStmt VisitGenericSelectionExpr(GenericSelectionExpr *E);
@@ -7051,6 +7052,21 @@ ExpectedStmt ASTNodeImporter::VisitChooseExpr(ChooseExpr *E) {
70517052
ToRParenLoc, CondIsTrue);
70527053
}
70537054

7055+
ExpectedStmt ASTNodeImporter::VisitConvertVectorExpr(ConvertVectorExpr *E) {
7056+
Error Err = Error::success();
7057+
auto *ToSrcExpr = importChecked(Err, E->getSrcExpr());
7058+
auto ToRParenLoc = importChecked(Err, E->getRParenLoc());
7059+
auto ToBuiltinLoc = importChecked(Err, E->getBuiltinLoc());
7060+
auto ToType = importChecked(Err, E->getType());
7061+
auto *ToTSI = importChecked(Err, E->getTypeSourceInfo());
7062+
if (Err)
7063+
return std::move(Err);
7064+
7065+
return new (Importer.getToContext())
7066+
ConvertVectorExpr(ToSrcExpr, ToTSI, ToType, E->getValueKind(),
7067+
E->getObjectKind(), ToBuiltinLoc, ToRParenLoc);
7068+
}
7069+
70547070
ExpectedStmt ASTNodeImporter::VisitShuffleVectorExpr(ShuffleVectorExpr *E) {
70557071
Error Err = Error::success();
70567072
auto ToRParenLoc = importChecked(Err, E->getRParenLoc());

clang/unittests/AST/ASTImporterTest.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1306,6 +1306,29 @@ TEST_P(ASTImporterOptionSpecificTestBase, ImportChooseExpr) {
13061306
ToChooseExpr->isConditionDependent());
13071307
}
13081308

1309+
TEST_P(ASTImporterOptionSpecificTestBase, ImportConvertVectorExpr) {
1310+
Decl *From, *To;
1311+
std::tie(From, To) = getImportedDecl(
1312+
"typedef double v4double __attribute__((__vector_size__(32)));"
1313+
"typedef float v4float __attribute__((__vector_size__(16)));"
1314+
"v4float vf;"
1315+
"void declToImport() { (void)__builtin_convertvector(vf, v4double); }",
1316+
Lang_CXX03, "", Lang_CXX03);
1317+
1318+
auto ToResults =
1319+
match(convertVectorExpr().bind("convert"), To->getASTContext());
1320+
auto FromResults =
1321+
match(convertVectorExpr().bind("convert"), From->getASTContext());
1322+
1323+
const ConvertVectorExpr *FromConvertVectorExpr =
1324+
selectFirst<ConvertVectorExpr>("convert", FromResults);
1325+
ASSERT_TRUE(FromConvertVectorExpr);
1326+
1327+
const ConvertVectorExpr *ToConvertVectorExpr =
1328+
selectFirst<ConvertVectorExpr>("convert", ToResults);
1329+
ASSERT_TRUE(ToConvertVectorExpr);
1330+
}
1331+
13091332
TEST_P(ASTImporterOptionSpecificTestBase, ImportGenericSelectionExpr) {
13101333
Decl *From, *To;
13111334
std::tie(From, To) = getImportedDecl(

0 commit comments

Comments
 (0)