summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabor Horvath <xazax.hun@gmail.com>2016-11-23 15:24:23 +0000
committerGabor Horvath <xazax.hun@gmail.com>2016-11-23 15:24:23 +0000
commit0866c2f5d4989e62e7d5883944199452b97c5b5f (patch)
tree2a7448e2798340b3ace09f99efb65468d16e016b
parent4e9b9cbee98e4df128cdcd5bb1a41d77dacbb480 (diff)
downloadbcm5719-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.cpp9
-rw-r--r--clang/unittests/AST/ASTImporterTest.cpp15
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
OpenPOWER on IntegriCloud