[clang] [CIR] Add diagnostic for NYI AST visitor handlers (PR #151561)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Jul 31 10:15:37 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Andy Kaylor (andykaylor)
<details>
<summary>Changes</summary>
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).
---
Full diff: https://github.com/llvm/llvm-project/pull/151561.diff
2 Files Affected:
- (modified) clang/include/clang/CIR/CIRGenerator.h (+3)
- (modified) clang/lib/CIR/CodeGen/CIRGenerator.cpp (+21)
``````````diff
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");
+}
``````````
</details>
https://github.com/llvm/llvm-project/pull/151561
More information about the cfe-commits
mailing list