[clang] [clang][ASTImporter] Add import of node 'FileScopeAsmDecl' (PR #193244)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 21 08:21:19 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Balázs Kéri (balazske)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/193244.diff
2 Files Affected:
- (modified) clang/lib/AST/ASTImporter.cpp (+22)
- (modified) clang/unittests/AST/ASTImporterTest.cpp (+10)
``````````diff
diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp
index 41ba98c53247d..1940c6165541b 100644
--- a/clang/lib/AST/ASTImporter.cpp
+++ b/clang/lib/AST/ASTImporter.cpp
@@ -517,6 +517,7 @@ namespace clang {
ExpectedDecl VisitAccessSpecDecl(AccessSpecDecl *D);
ExpectedDecl VisitStaticAssertDecl(StaticAssertDecl *D);
ExpectedDecl VisitTranslationUnitDecl(TranslationUnitDecl *D);
+ ExpectedDecl VisitFileScopeAsmDecl(FileScopeAsmDecl *D);
ExpectedDecl VisitBindingDecl(BindingDecl *D);
ExpectedDecl VisitNamespaceDecl(NamespaceDecl *D);
ExpectedDecl VisitNamespaceAliasDecl(NamespaceAliasDecl *D);
@@ -2781,6 +2782,27 @@ ExpectedDecl ASTNodeImporter::VisitTranslationUnitDecl(TranslationUnitDecl *D) {
return ToD;
}
+ExpectedDecl ASTNodeImporter::VisitFileScopeAsmDecl(FileScopeAsmDecl *D) {
+ Error Err = Error::success();
+ Expr *ToAsmString = importChecked(Err, D->getAsmStringExpr());
+ SourceLocation ToAsmLoc = importChecked(Err, D->getAsmLoc());
+ SourceLocation ToRParenLoc = importChecked(Err, D->getRParenLoc());
+ auto DCOrErr = Importer.ImportContext(D->getDeclContext());
+ if (!DCOrErr)
+ return DCOrErr.takeError();
+ DeclContext *DC = *DCOrErr;
+
+ FileScopeAsmDecl *ToD;
+ if (GetImportedOrCreateDecl(ToD, D, Importer.getToContext(), DC, ToAsmString,
+ ToAsmLoc, ToRParenLoc))
+ return ToD;
+
+ ToD->setLexicalDeclContext(DC);
+ DC->addDeclInternal(ToD);
+
+ return ToD;
+}
+
ExpectedDecl ASTNodeImporter::VisitBindingDecl(BindingDecl *D) {
DeclContext *DC, *LexicalDC;
DeclarationName Name;
diff --git a/clang/unittests/AST/ASTImporterTest.cpp b/clang/unittests/AST/ASTImporterTest.cpp
index d1d6ea94d3154..7eeacd826b927 100644
--- a/clang/unittests/AST/ASTImporterTest.cpp
+++ b/clang/unittests/AST/ASTImporterTest.cpp
@@ -1131,6 +1131,16 @@ TEST_P(ImportExpr, DependentSizedExtVectorType) {
has(typedefDecl(hasType(dependentSizedExtVectorType())))))));
}
+TEST_P(ASTImporterOptionSpecificTestBase, ImportFileScopeAsmDecl) {
+ Decl *FromTU = getTuDecl("__asm(\"nop\");", Lang_CXX03);
+ auto From =
+ FirstDeclMatcher<FileScopeAsmDecl>().match(FromTU, fileScopeAsmDecl());
+ ASSERT_TRUE(From);
+ FileScopeAsmDecl *To = Import(From, Lang_CXX03);
+ EXPECT_TRUE(To);
+ EXPECT_EQ(To->getAsmString(), "nop");
+}
+
TEST_P(ASTImporterOptionSpecificTestBase, ImportUsingPackDecl) {
Decl *FromTU = getTuDecl(
"struct A { int operator()() { return 1; } };"
``````````
</details>
https://github.com/llvm/llvm-project/pull/193244
More information about the cfe-commits
mailing list