[PATCH] D157238: [clang][ASTImporter] Add import of 'DependentSizedExtVectorType'

2023-08-07 Thread Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rGdb92fb8726fc: [clang][ASTImporter] Add import of 
DependentSizedExtVectorType (authored by dingfei 
fd...@feysh.com).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D157238/new/

https://reviews.llvm.org/D157238

Files:
  clang/lib/AST/ASTImporter.cpp
  clang/unittests/AST/ASTImporterFixtures.h
  clang/unittests/AST/ASTImporterTest.cpp


Index: clang/unittests/AST/ASTImporterTest.cpp
===
--- clang/unittests/AST/ASTImporterTest.cpp
+++ clang/unittests/AST/ASTImporterTest.cpp
@@ -1044,6 +1044,17 @@
  has(fieldDecl(hasType(dependentSizedArrayType(;
 }
 
+TEST_P(ImportExpr, DependentSizedExtVectorType) {
+  MatchVerifier Verifier;
+  testImport("template"
+ "class declToImport {"
+ "  typedef T __attribute__((ext_vector_type(Size))) type;"
+ "};",
+ Lang_CXX03, "", Lang_CXX03, Verifier,
+ classTemplateDecl(has(cxxRecordDecl(
+ has(typedefDecl(hasType(dependentSizedExtVectorType(;
+}
+
 TEST_P(ASTImporterOptionSpecificTestBase, ImportUsingPackDecl) {
   Decl *FromTU = getTuDecl(
   "struct A { int operator()() { return 1; } };"
Index: clang/unittests/AST/ASTImporterFixtures.h
===
--- clang/unittests/AST/ASTImporterFixtures.h
+++ clang/unittests/AST/ASTImporterFixtures.h
@@ -260,6 +260,8 @@
  FromAST->getFileManager(), false);
 
 auto FoundNodes = match(SearchMatcher, FromCtx);
+if (FoundNodes.empty())
+  return testing::AssertionFailure() << "No node was found!";
 if (FoundNodes.size() != 1)
   return testing::AssertionFailure()
  << "Multiple potential nodes were found!";
Index: clang/lib/AST/ASTImporter.cpp
===
--- clang/lib/AST/ASTImporter.cpp
+++ clang/lib/AST/ASTImporter.cpp
@@ -381,7 +381,8 @@
 ExpectedType VisitIncompleteArrayType(const IncompleteArrayType *T);
 ExpectedType VisitVariableArrayType(const VariableArrayType *T);
 ExpectedType VisitDependentSizedArrayType(const DependentSizedArrayType 
*T);
-// FIXME: DependentSizedExtVectorType
+ExpectedType
+VisitDependentSizedExtVectorType(const DependentSizedExtVectorType *T);
 ExpectedType VisitVectorType(const VectorType *T);
 ExpectedType VisitExtVectorType(const ExtVectorType *T);
 ExpectedType VisitFunctionNoProtoType(const FunctionNoProtoType *T);
@@ -1264,6 +1265,18 @@
   T->getIndexTypeCVRQualifiers(), ToBracketsRange);
 }
 
+ExpectedType ASTNodeImporter::VisitDependentSizedExtVectorType(
+const DependentSizedExtVectorType *T) {
+  Error Err = Error::success();
+  QualType ToElementType = importChecked(Err, T->getElementType());
+  Expr *ToSizeExpr = importChecked(Err, T->getSizeExpr());
+  SourceLocation ToAttrLoc = importChecked(Err, T->getAttributeLoc());
+  if (Err)
+return std::move(Err);
+  return Importer.getToContext().getDependentSizedExtVectorType(
+  ToElementType, ToSizeExpr, ToAttrLoc);
+}
+
 ExpectedType ASTNodeImporter::VisitVectorType(const VectorType *T) {
   ExpectedType ToElementTypeOrErr = import(T->getElementType());
   if (!ToElementTypeOrErr)


Index: clang/unittests/AST/ASTImporterTest.cpp
===
--- clang/unittests/AST/ASTImporterTest.cpp
+++ clang/unittests/AST/ASTImporterTest.cpp
@@ -1044,6 +1044,17 @@
  has(fieldDecl(hasType(dependentSizedArrayType(;
 }
 
+TEST_P(ImportExpr, DependentSizedExtVectorType) {
+  MatchVerifier Verifier;
+  testImport("template"
+ "class declToImport {"
+ "  typedef T __attribute__((ext_vector_type(Size))) type;"
+ "};",
+ Lang_CXX03, "", Lang_CXX03, Verifier,
+ classTemplateDecl(has(cxxRecordDecl(
+ has(typedefDecl(hasType(dependentSizedExtVectorType(;
+}
+
 TEST_P(ASTImporterOptionSpecificTestBase, ImportUsingPackDecl) {
   Decl *FromTU = getTuDecl(
   "struct A { int operator()() { return 1; } };"
Index: clang/unittests/AST/ASTImporterFixtures.h
===
--- clang/unittests/AST/ASTImporterFixtures.h
+++ clang/unittests/AST/ASTImporterFixtures.h
@@ -260,6 +260,8 @@
  FromAST->getFileManager(), false);
 
 auto FoundNodes = match(SearchMatcher, FromCtx);
+if (FoundNodes.empty())
+  return testing::AssertionFailure() << "No node was found!";
 if (FoundNodes.size() != 1)
   return testing::AssertionFailure()
  << "Multiple potential nodes were found!";
Index: clang/lib/AST/ASTImporter.cpp
===
--- 

[PATCH] D157238: [clang][ASTImporter] Add import of 'DependentSizedExtVectorType'

2023-08-07 Thread Ding Fei via Phabricator via cfe-commits
danix800 added a comment.

In D157238#4565442 , @balazske wrote:

> In D157238#4565260 , @danix800 
> wrote:
>
>> In D157238#4565051 , @balazske 
>> wrote:
>>
>>> `ASTImporter` part looks good, I did not check the generated documentation 
>>> for correctness.
>>
>> Matcher part will be committed in https://reviews.llvm.org/D157237, these 
>> code is added here only to support this revision.
>
> It is possible to add D157237  as parent 
> revision (and upload code here without changes in D157237 
> ). It is more safe to have the exact same 
> code in the review that will be committed.

This revision is cleaned up since D157237  is 
already landed. For future revison I'll try these techniques to reduce 
reviewing burden. Thanks for reminding.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D157238/new/

https://reviews.llvm.org/D157238

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D157238: [clang][ASTImporter] Add import of 'DependentSizedExtVectorType'

2023-08-07 Thread Ding Fei via Phabricator via cfe-commits
danix800 updated this revision to Diff 547783.
danix800 added a comment.

Cleanup since D157237  is landed.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D157238/new/

https://reviews.llvm.org/D157238

Files:
  clang/lib/AST/ASTImporter.cpp
  clang/unittests/AST/ASTImporterFixtures.h
  clang/unittests/AST/ASTImporterTest.cpp


Index: clang/unittests/AST/ASTImporterTest.cpp
===
--- clang/unittests/AST/ASTImporterTest.cpp
+++ clang/unittests/AST/ASTImporterTest.cpp
@@ -1044,6 +1044,17 @@
  has(fieldDecl(hasType(dependentSizedArrayType(;
 }
 
+TEST_P(ImportExpr, DependentSizedExtVectorType) {
+  MatchVerifier Verifier;
+  testImport("template"
+ "class declToImport {"
+ "  typedef T __attribute__((ext_vector_type(Size))) type;"
+ "};",
+ Lang_CXX03, "", Lang_CXX03, Verifier,
+ classTemplateDecl(has(cxxRecordDecl(
+ has(typedefDecl(hasType(dependentSizedExtVectorType(;
+}
+
 TEST_P(ASTImporterOptionSpecificTestBase, ImportUsingPackDecl) {
   Decl *FromTU = getTuDecl(
   "struct A { int operator()() { return 1; } };"
Index: clang/unittests/AST/ASTImporterFixtures.h
===
--- clang/unittests/AST/ASTImporterFixtures.h
+++ clang/unittests/AST/ASTImporterFixtures.h
@@ -260,6 +260,8 @@
  FromAST->getFileManager(), false);
 
 auto FoundNodes = match(SearchMatcher, FromCtx);
+if (FoundNodes.empty())
+  return testing::AssertionFailure() << "No node was found!";
 if (FoundNodes.size() != 1)
   return testing::AssertionFailure()
  << "Multiple potential nodes were found!";
Index: clang/lib/AST/ASTImporter.cpp
===
--- clang/lib/AST/ASTImporter.cpp
+++ clang/lib/AST/ASTImporter.cpp
@@ -381,7 +381,8 @@
 ExpectedType VisitIncompleteArrayType(const IncompleteArrayType *T);
 ExpectedType VisitVariableArrayType(const VariableArrayType *T);
 ExpectedType VisitDependentSizedArrayType(const DependentSizedArrayType 
*T);
-// FIXME: DependentSizedExtVectorType
+ExpectedType
+VisitDependentSizedExtVectorType(const DependentSizedExtVectorType *T);
 ExpectedType VisitVectorType(const VectorType *T);
 ExpectedType VisitExtVectorType(const ExtVectorType *T);
 ExpectedType VisitFunctionNoProtoType(const FunctionNoProtoType *T);
@@ -1264,6 +1265,18 @@
   T->getIndexTypeCVRQualifiers(), ToBracketsRange);
 }
 
+ExpectedType ASTNodeImporter::VisitDependentSizedExtVectorType(
+const DependentSizedExtVectorType *T) {
+  Error Err = Error::success();
+  QualType ToElementType = importChecked(Err, T->getElementType());
+  Expr *ToSizeExpr = importChecked(Err, T->getSizeExpr());
+  SourceLocation ToAttrLoc = importChecked(Err, T->getAttributeLoc());
+  if (Err)
+return std::move(Err);
+  return Importer.getToContext().getDependentSizedExtVectorType(
+  ToElementType, ToSizeExpr, ToAttrLoc);
+}
+
 ExpectedType ASTNodeImporter::VisitVectorType(const VectorType *T) {
   ExpectedType ToElementTypeOrErr = import(T->getElementType());
   if (!ToElementTypeOrErr)


Index: clang/unittests/AST/ASTImporterTest.cpp
===
--- clang/unittests/AST/ASTImporterTest.cpp
+++ clang/unittests/AST/ASTImporterTest.cpp
@@ -1044,6 +1044,17 @@
  has(fieldDecl(hasType(dependentSizedArrayType(;
 }
 
+TEST_P(ImportExpr, DependentSizedExtVectorType) {
+  MatchVerifier Verifier;
+  testImport("template"
+ "class declToImport {"
+ "  typedef T __attribute__((ext_vector_type(Size))) type;"
+ "};",
+ Lang_CXX03, "", Lang_CXX03, Verifier,
+ classTemplateDecl(has(cxxRecordDecl(
+ has(typedefDecl(hasType(dependentSizedExtVectorType(;
+}
+
 TEST_P(ASTImporterOptionSpecificTestBase, ImportUsingPackDecl) {
   Decl *FromTU = getTuDecl(
   "struct A { int operator()() { return 1; } };"
Index: clang/unittests/AST/ASTImporterFixtures.h
===
--- clang/unittests/AST/ASTImporterFixtures.h
+++ clang/unittests/AST/ASTImporterFixtures.h
@@ -260,6 +260,8 @@
  FromAST->getFileManager(), false);
 
 auto FoundNodes = match(SearchMatcher, FromCtx);
+if (FoundNodes.empty())
+  return testing::AssertionFailure() << "No node was found!";
 if (FoundNodes.size() != 1)
   return testing::AssertionFailure()
  << "Multiple potential nodes were found!";
Index: clang/lib/AST/ASTImporter.cpp
===
--- clang/lib/AST/ASTImporter.cpp
+++ clang/lib/AST/ASTImporter.cpp
@@ -381,7 

[PATCH] D157238: [clang][ASTImporter] Add import of 'DependentSizedExtVectorType'

2023-08-07 Thread Balázs Kéri via Phabricator via cfe-commits
balazske added a comment.

In D157238#4565260 , @danix800 wrote:

> In D157238#4565051 , @balazske 
> wrote:
>
>> `ASTImporter` part looks good, I did not check the generated documentation 
>> for correctness.
>
> Matcher part will be committed in https://reviews.llvm.org/D157237, these 
> code is added here only to support this revision.

It is possible to add D157237  as parent 
revision (and upload code here without changes in D157237 
). It is more safe to have the exact same 
code in the review that will be committed.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D157238/new/

https://reviews.llvm.org/D157238

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D157238: [clang][ASTImporter] Add import of 'DependentSizedExtVectorType'

2023-08-07 Thread Ding Fei via Phabricator via cfe-commits
danix800 added a comment.

In D157238#4565051 , @balazske wrote:

> `ASTImporter` part looks good, I did not check the generated documentation 
> for correctness.

Matcher part will be committed in https://reviews.llvm.org/D157237, these code 
is added here only to support this revision.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D157238/new/

https://reviews.llvm.org/D157238

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D157238: [clang][ASTImporter] Add import of 'DependentSizedExtVectorType'

2023-08-07 Thread Balázs Kéri via Phabricator via cfe-commits
balazske added a comment.

`ASTImporter` part looks good, I did not check the generated documentation for 
correctness.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D157238/new/

https://reviews.llvm.org/D157238

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D157238: [clang][ASTImporter] Add import of 'DependentSizedExtVectorType'

2023-08-06 Thread Ding Fei via Phabricator via cfe-commits
danix800 updated this revision to Diff 547615.
danix800 added a comment.

Apply git-clang-format


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D157238/new/

https://reviews.llvm.org/D157238

Files:
  clang/docs/LibASTMatchersReference.html
  clang/docs/ReleaseNotes.rst
  clang/include/clang/ASTMatchers/ASTMatchers.h
  clang/lib/AST/ASTImporter.cpp
  clang/lib/ASTMatchers/ASTMatchersInternal.cpp
  clang/lib/ASTMatchers/Dynamic/Registry.cpp
  clang/unittests/AST/ASTImporterFixtures.h
  clang/unittests/AST/ASTImporterTest.cpp
  clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp

Index: clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
===
--- clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
+++ clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
@@ -1560,6 +1560,20 @@
  dependentSizedArrayType()));
 }
 
+TEST_P(ASTMatchersTest, DependentSizedExtVectorType) {
+  if (!GetParam().isCXX()) {
+return;
+  }
+  EXPECT_TRUE(matches("template"
+  "class vector {"
+  "  typedef T __attribute__((ext_vector_type(Size))) type;"
+  "};",
+  dependentSizedExtVectorType()));
+  EXPECT_TRUE(
+  notMatches("int a[42]; int b[] = { 2, 3 }; void f() { int c[b[0]]; }",
+ dependentSizedExtVectorType()));
+}
+
 TEST_P(ASTMatchersTest, IncompleteArrayType) {
   EXPECT_TRUE(matches("int a[] = { 2, 3 };", incompleteArrayType()));
   EXPECT_TRUE(matches("void f(int a[]) {}", incompleteArrayType()));
Index: clang/unittests/AST/ASTImporterTest.cpp
===
--- clang/unittests/AST/ASTImporterTest.cpp
+++ clang/unittests/AST/ASTImporterTest.cpp
@@ -1044,6 +1044,17 @@
  has(fieldDecl(hasType(dependentSizedArrayType(;
 }
 
+TEST_P(ImportExpr, DependentSizedExtVectorType) {
+  MatchVerifier Verifier;
+  testImport("template"
+ "class declToImport {"
+ "  typedef T __attribute__((ext_vector_type(Size))) type;"
+ "};",
+ Lang_CXX03, "", Lang_CXX03, Verifier,
+ classTemplateDecl(has(cxxRecordDecl(
+ has(typedefDecl(hasType(dependentSizedExtVectorType(;
+}
+
 TEST_P(ASTImporterOptionSpecificTestBase, ImportUsingPackDecl) {
   Decl *FromTU = getTuDecl(
   "struct A { int operator()() { return 1; } };"
Index: clang/unittests/AST/ASTImporterFixtures.h
===
--- clang/unittests/AST/ASTImporterFixtures.h
+++ clang/unittests/AST/ASTImporterFixtures.h
@@ -260,6 +260,8 @@
  FromAST->getFileManager(), false);
 
 auto FoundNodes = match(SearchMatcher, FromCtx);
+if (FoundNodes.empty())
+  return testing::AssertionFailure() << "No node was found!";
 if (FoundNodes.size() != 1)
   return testing::AssertionFailure()
  << "Multiple potential nodes were found!";
Index: clang/lib/ASTMatchers/Dynamic/Registry.cpp
===
--- clang/lib/ASTMatchers/Dynamic/Registry.cpp
+++ clang/lib/ASTMatchers/Dynamic/Registry.cpp
@@ -227,6 +227,7 @@
   REGISTER_MATCHER(defaultStmt);
   REGISTER_MATCHER(dependentCoawaitExpr);
   REGISTER_MATCHER(dependentSizedArrayType);
+  REGISTER_MATCHER(dependentSizedExtVectorType);
   REGISTER_MATCHER(designatedInitExpr);
   REGISTER_MATCHER(designatorCountIs);
   REGISTER_MATCHER(doStmt);
Index: clang/lib/ASTMatchers/ASTMatchersInternal.cpp
===
--- clang/lib/ASTMatchers/ASTMatchersInternal.cpp
+++ clang/lib/ASTMatchers/ASTMatchersInternal.cpp
@@ -1046,6 +1046,7 @@
 const AstTypeMatcher
 deducedTemplateSpecializationType;
 const AstTypeMatcher dependentSizedArrayType;
+const AstTypeMatcher dependentSizedExtVectorType;
 const AstTypeMatcher incompleteArrayType;
 const AstTypeMatcher variableArrayType;
 const AstTypeMatcher atomicType;
Index: clang/lib/AST/ASTImporter.cpp
===
--- clang/lib/AST/ASTImporter.cpp
+++ clang/lib/AST/ASTImporter.cpp
@@ -381,7 +381,8 @@
 ExpectedType VisitIncompleteArrayType(const IncompleteArrayType *T);
 ExpectedType VisitVariableArrayType(const VariableArrayType *T);
 ExpectedType VisitDependentSizedArrayType(const DependentSizedArrayType *T);
-// FIXME: DependentSizedExtVectorType
+ExpectedType
+VisitDependentSizedExtVectorType(const DependentSizedExtVectorType *T);
 ExpectedType VisitVectorType(const VectorType *T);
 ExpectedType VisitExtVectorType(const ExtVectorType *T);
 ExpectedType VisitFunctionNoProtoType(const FunctionNoProtoType *T);
@@ -1264,6 +1265,18 @@
   T->getIndexTypeCVRQualifiers(), ToBracketsRange);
 }
 
+ExpectedType 

[PATCH] D157238: [clang][ASTImporter] Add import of 'DependentSizedExtVectorType'

2023-08-06 Thread Ding Fei via Phabricator via cfe-commits
danix800 created this revision.
danix800 added reviewers: Aar454on, balazske.
danix800 added a project: clang.
Herald added a subscriber: martong.
Herald added a reviewer: a.sidorin.
Herald added a reviewer: shafik.
Herald added a project: All.
danix800 requested review of this revision.
Herald added a subscriber: cfe-commits.

Add import of 'DependentSizedExtVectorType'.

Depends on https://reviews.llvm.org/D157237


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D157238

Files:
  clang/docs/LibASTMatchersReference.html
  clang/docs/ReleaseNotes.rst
  clang/include/clang/ASTMatchers/ASTMatchers.h
  clang/lib/AST/ASTImporter.cpp
  clang/lib/ASTMatchers/ASTMatchersInternal.cpp
  clang/unittests/AST/ASTImporterFixtures.h
  clang/unittests/AST/ASTImporterTest.cpp
  clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp

Index: clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
===
--- clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
+++ clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
@@ -1560,6 +1560,19 @@
  dependentSizedArrayType()));
 }
 
+TEST_P(ASTMatchersTest, DependentSizedExtVectorType) {
+  if (!GetParam().isCXX()) {
+return;
+  }
+  EXPECT_TRUE(matches("template"
+  "class vector {"
+  "  typedef T __attribute__((ext_vector_type(Size))) type;"
+  "};", dependentSizedExtVectorType()));
+  EXPECT_TRUE(
+  notMatches("int a[42]; int b[] = { 2, 3 }; void f() { int c[b[0]]; }",
+ dependentSizedExtVectorType()));
+}
+
 TEST_P(ASTMatchersTest, IncompleteArrayType) {
   EXPECT_TRUE(matches("int a[] = { 2, 3 };", incompleteArrayType()));
   EXPECT_TRUE(matches("void f(int a[]) {}", incompleteArrayType()));
Index: clang/unittests/AST/ASTImporterTest.cpp
===
--- clang/unittests/AST/ASTImporterTest.cpp
+++ clang/unittests/AST/ASTImporterTest.cpp
@@ -1044,6 +1044,17 @@
  has(fieldDecl(hasType(dependentSizedArrayType(;
 }
 
+TEST_P(ImportExpr, DependentSizedExtVectorType) {
+  MatchVerifier Verifier;
+  testImport("template"
+ "class declToImport {"
+ "  typedef T __attribute__((ext_vector_type(Size))) type;"
+ "};",
+ Lang_CXX03, "", Lang_CXX03, Verifier,
+ classTemplateDecl(has(cxxRecordDecl(
+ has(typedefDecl(hasType(dependentSizedExtVectorType(;
+}
+
 TEST_P(ASTImporterOptionSpecificTestBase, ImportUsingPackDecl) {
   Decl *FromTU = getTuDecl(
   "struct A { int operator()() { return 1; } };"
Index: clang/unittests/AST/ASTImporterFixtures.h
===
--- clang/unittests/AST/ASTImporterFixtures.h
+++ clang/unittests/AST/ASTImporterFixtures.h
@@ -260,6 +260,8 @@
  FromAST->getFileManager(), false);
 
 auto FoundNodes = match(SearchMatcher, FromCtx);
+if (FoundNodes.empty())
+  return testing::AssertionFailure() << "No node was found!";
 if (FoundNodes.size() != 1)
   return testing::AssertionFailure()
  << "Multiple potential nodes were found!";
Index: clang/lib/ASTMatchers/ASTMatchersInternal.cpp
===
--- clang/lib/ASTMatchers/ASTMatchersInternal.cpp
+++ clang/lib/ASTMatchers/ASTMatchersInternal.cpp
@@ -1046,6 +1046,7 @@
 const AstTypeMatcher
 deducedTemplateSpecializationType;
 const AstTypeMatcher dependentSizedArrayType;
+const AstTypeMatcher dependentSizedExtVectorType;
 const AstTypeMatcher incompleteArrayType;
 const AstTypeMatcher variableArrayType;
 const AstTypeMatcher atomicType;
Index: clang/lib/AST/ASTImporter.cpp
===
--- clang/lib/AST/ASTImporter.cpp
+++ clang/lib/AST/ASTImporter.cpp
@@ -381,7 +381,8 @@
 ExpectedType VisitIncompleteArrayType(const IncompleteArrayType *T);
 ExpectedType VisitVariableArrayType(const VariableArrayType *T);
 ExpectedType VisitDependentSizedArrayType(const DependentSizedArrayType *T);
-// FIXME: DependentSizedExtVectorType
+ExpectedType
+VisitDependentSizedExtVectorType(const DependentSizedExtVectorType *T);
 ExpectedType VisitVectorType(const VectorType *T);
 ExpectedType VisitExtVectorType(const ExtVectorType *T);
 ExpectedType VisitFunctionNoProtoType(const FunctionNoProtoType *T);
@@ -1264,6 +1265,18 @@
   T->getIndexTypeCVRQualifiers(), ToBracketsRange);
 }
 
+ExpectedType ASTNodeImporter::VisitDependentSizedExtVectorType(
+const DependentSizedExtVectorType *T) {
+  Error Err = Error::success();
+  QualType ToElementType = importChecked(Err, T->getElementType());
+  Expr *ToSizeExpr = importChecked(Err, T->getSizeExpr());
+  SourceLocation ToAttrLoc = importChecked(Err, T->getAttributeLoc());
+  if (Err)
+return