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 <akay...@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"); +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits