[clang] [CIR] Add diagnostic for NYI AST visitor handlers (PR #151561)
Andy Kaylor via cfe-commits
cfe-commits at lists.llvm.org
Thu Jul 31 10:15:05 PDT 2025
https://github.com/andykaylor created https://github.com/llvm/llvm-project/pull/151561
A couple of handlers that were missing from the CIRGenerator AST visitor allowed important features to be silently ignored during CIR generation. This change adds these handlers with diagnostics to report that they are not yet handled (except in the case where only debug information is missed).
>From e50f9ae5cadab7d2f17748c99ea61a5fb5238488 Mon Sep 17 00:00:00 2001
From: Andy Kaylor <akaylor at nvidia.com>
Date: Thu, 31 Jul 2025 10:02:55 -0700
Subject: [PATCH] [CIR] Add diagnostic for NYI AST visitor handlers
A couple of handlers that were missing from the CIRGenerator AST visitor
allowed important features to be silently ignored during CIR generation.
This change adds these handlers with diagnostics to report that they are
not yet handled (except in the case where only debug information is
missed).
---
clang/include/clang/CIR/CIRGenerator.h | 3 +++
clang/lib/CIR/CodeGen/CIRGenerator.cpp | 21 +++++++++++++++++++++
2 files changed, 24 insertions(+)
diff --git a/clang/include/clang/CIR/CIRGenerator.h b/clang/include/clang/CIR/CIRGenerator.h
index dd48eec238fca..5ea11463ffa9f 100644
--- a/clang/include/clang/CIR/CIRGenerator.h
+++ b/clang/include/clang/CIR/CIRGenerator.h
@@ -79,7 +79,10 @@ class CIRGenerator : public clang::ASTConsumer {
void HandleTranslationUnit(clang::ASTContext &astContext) override;
void HandleInlineFunctionDefinition(clang::FunctionDecl *d) override;
void HandleTagDeclDefinition(clang::TagDecl *d) override;
+ void HandleTagDeclRequiredDefinition(const clang::TagDecl *D) override;
+ void HandleCXXStaticMemberVarInstantiation(clang::VarDecl *D) override;
void CompleteTentativeDefinition(clang::VarDecl *d) override;
+ void HandleVTable(clang::CXXRecordDecl *rd) override;
mlir::ModuleOp getModule() const;
mlir::MLIRContext &getMLIRContext() { return *mlirContext; };
diff --git a/clang/lib/CIR/CodeGen/CIRGenerator.cpp b/clang/lib/CIR/CodeGen/CIRGenerator.cpp
index 99d652841be27..b0357d9d3b7fa 100644
--- a/clang/lib/CIR/CodeGen/CIRGenerator.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenerator.cpp
@@ -152,9 +152,30 @@ void CIRGenerator::HandleTagDeclDefinition(TagDecl *d) {
cgm->errorNYI(d->getSourceRange(), "HandleTagDeclDefinition: OpenMP");
}
+void CIRGenerator::HandleTagDeclRequiredDefinition(const TagDecl *D) {
+ if (diags.hasErrorOccurred())
+ return;
+
+ assert(!cir::MissingFeatures::generateDebugInfo());
+}
+
+void CIRGenerator::HandleCXXStaticMemberVarInstantiation(VarDecl *D) {
+ if (diags.hasErrorOccurred())
+ return;
+
+ cgm->errorNYI(D->getSourceRange(), "HandleCXXStaticMemberVarInstantiation");
+}
+
void CIRGenerator::CompleteTentativeDefinition(VarDecl *d) {
if (diags.hasErrorOccurred())
return;
cgm->emitTentativeDefinition(d);
}
+
+void CIRGenerator::HandleVTable(CXXRecordDecl *rd) {
+ if (diags.hasErrorOccurred())
+ return;
+
+ cgm->errorNYI(rd->getSourceRange(), "HandleVTable");
+}
More information about the cfe-commits
mailing list