https://github.com/jcsxky updated https://github.com/llvm/llvm-project/pull/87314
>From 1a1071845f2409dd07be454fb68ff42911fb62a2 Mon Sep 17 00:00:00 2001 From: huqizhi <huqi...@feysh.com> Date: Tue, 2 Apr 2024 13:18:14 +0800 Subject: [PATCH] [clang][ASTImporter] fix variable inline of CXX17 --- clang/lib/AST/ASTImporter.cpp | 7 ++++++- clang/unittests/AST/ASTImporterTest.cpp | 28 +++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp index 94a47a8f619018..2b2c7c0491dfe5 100644 --- a/clang/lib/AST/ASTImporter.cpp +++ b/clang/lib/AST/ASTImporter.cpp @@ -4579,7 +4579,12 @@ ExpectedDecl ASTNodeImporter::VisitVarDecl(VarDecl *D) { if (!RedeclOrErr) return RedeclOrErr.takeError(); } - + if (D->isInlineSpecified()) { + ToVar->setInlineSpecified(); + } + if (D->isInline()) { + ToVar->setImplicitlyInline(); + } return ToVar; } diff --git a/clang/unittests/AST/ASTImporterTest.cpp b/clang/unittests/AST/ASTImporterTest.cpp index 35ab7e3b7fe314..d57736830f0223 100644 --- a/clang/unittests/AST/ASTImporterTest.cpp +++ b/clang/unittests/AST/ASTImporterTest.cpp @@ -5317,6 +5317,34 @@ TEST_P(ASTImporterOptionSpecificTestBase, EXPECT_FALSE(ToX); } +TEST_P(ASTImporterOptionSpecificTestBase, VarTemplateDeclInlineWithCXX17) { + Decl *FromTU = getTuDecl( + R"( + struct S { + template <unsigned> static constexpr bool X = true; + }; + )", + Lang_CXX17, "input1.cc"); + Decl *FromTU2 = getTuDecl( + R"( + struct S { + template <unsigned> static constexpr bool X = true; + template <typename T> void get() { X<sizeof(T)>; } + }; + template <typename T> T qvariant_cast(const S &v) { return v.get; } + )", + Lang_CXX17, "input2.cc"); + auto *FromX = FirstDeclMatcher<VarTemplateDecl>().match( + FromTU, varTemplateDecl(hasName("X"))); + auto *ToX = Import(FromX, Lang_CXX17); + EXPECT_TRUE(ToX); + auto *FromX2 = FirstDeclMatcher<VarTemplateDecl>().match( + FromTU2, varTemplateDecl(hasName("X"))); + auto *ToX2 = Import(FromX2, Lang_CXX17); + EXPECT_TRUE(ToX2); + EXPECT_TRUE(ToX == ToX2); +} + TEST_P(ASTImporterOptionSpecificTestBase, VarTemplateParameterDeclContext) { constexpr auto Code = R"( _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits