diff options
| author | Gabor Horvath <xazax.hun@gmail.com> | 2016-11-23 15:24:23 +0000 |
|---|---|---|
| committer | Gabor Horvath <xazax.hun@gmail.com> | 2016-11-23 15:24:23 +0000 |
| commit | 0866c2f5d4989e62e7d5883944199452b97c5b5f (patch) | |
| tree | 2a7448e2798340b3ace09f99efb65468d16e016b | |
| parent | 4e9b9cbee98e4df128cdcd5bb1a41d77dacbb480 (diff) | |
| download | bcm5719-llvm-0866c2f5d4989e62e7d5883944199452b97c5b5f.tar.gz bcm5719-llvm-0866c2f5d4989e62e7d5883944199452b97c5b5f.zip | |
[ASTImporter] Added ability to import AtomicType nodes
Patch by: Kareem Khazem
Differential Revision: https://reviews.llvm.org/D26328
llvm-svn: 287763
| -rw-r--r-- | clang/lib/AST/ASTImporter.cpp | 9 | ||||
| -rw-r--r-- | clang/unittests/AST/ASTImporterTest.cpp | 15 |
2 files changed, 24 insertions, 0 deletions
diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp index e783854448b..1a7522db91a 100644 --- a/clang/lib/AST/ASTImporter.cpp +++ b/clang/lib/AST/ASTImporter.cpp @@ -39,6 +39,7 @@ namespace clang { // Importing types QualType VisitType(const Type *T); + QualType VisitAtomicType(const AtomicType *T); QualType VisitBuiltinType(const BuiltinType *T); QualType VisitDecayedType(const DecayedType *T); QualType VisitComplexType(const ComplexType *T); @@ -1600,6 +1601,14 @@ QualType ASTNodeImporter::VisitType(const Type *T) { return QualType(); } +QualType ASTNodeImporter::VisitAtomicType(const AtomicType *T){ + QualType UnderlyingType = Importer.Import(T->getValueType()); + if(UnderlyingType.isNull()) + return QualType(); + + return Importer.getToContext().getAtomicType(UnderlyingType); +} + QualType ASTNodeImporter::VisitBuiltinType(const BuiltinType *T) { switch (T->getKind()) { #define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) \ diff --git a/clang/unittests/AST/ASTImporterTest.cpp b/clang/unittests/AST/ASTImporterTest.cpp index 2255d7652c2..57b41f12b0b 100644 --- a/clang/unittests/AST/ASTImporterTest.cpp +++ b/clang/unittests/AST/ASTImporterTest.cpp @@ -474,5 +474,20 @@ TEST(ImportExpr, ImportVAArgExpr) { } +TEST(ImportType, ImportAtomicType) { + MatchVerifier<Decl> Verifier; + EXPECT_TRUE(testImport("void declToImport() { typedef _Atomic(int) a_int; }", + Lang_CXX11, "", Lang_CXX11, Verifier, + functionDecl( + hasBody( + compoundStmt( + has( + declStmt( + has( + typedefDecl( + has(atomicType())))))))))); +} + + } // end namespace ast_matchers } // end namespace clang |

