diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp --- a/clang/lib/AST/ASTImporter.cpp +++ b/clang/lib/AST/ASTImporter.cpp @@ -8583,6 +8583,13 @@ break; } + case attr::EnableIf: { + const auto *From = cast(FromAttr); + AI.importAttr(From, AI.importArg(From->getCond()).value(), + From->getMessage()); + break; + } + case attr::AssertCapability: { const auto *From = cast(FromAttr); AI.importAttr(From, diff --git a/clang/unittests/AST/ASTImporterTest.cpp b/clang/unittests/AST/ASTImporterTest.cpp --- a/clang/unittests/AST/ASTImporterTest.cpp +++ b/clang/unittests/AST/ASTImporterTest.cpp @@ -6634,6 +6634,15 @@ EXPECT_EQ(FromAttr->getType()->getName(), ToAttr->getType()->getName()); } +TEST_P(ImportAttributes, ImportEnableIf) { + EnableIfAttr *FromAttr, *ToAttr; + importAttr( + "void test(int A) __attribute__((enable_if(A == 1, \"message\")));", + FromAttr, ToAttr); + checkImported(FromAttr->getCond(), ToAttr->getCond()); + EXPECT_EQ(FromAttr->getMessage(), ToAttr->getMessage()); +} + TEST_P(ImportAttributes, ImportGuardedVar) { GuardedVarAttr *FromAttr, *ToAttr; importAttr("int test __attribute__((guarded_var));", FromAttr,