Skip to content

Commit 17fdcda

Browse files
authored
[CIR][NFC] Upstream bulk handling for Decl kinds (llvm#138319)
This adds explicit case statements for Decl types that weren't explicitly present in the emitDecl function. Those that need no handling are just accepted. Those that will need handling still go to errorNYI, but the default statement is removed.
1 parent a9ce60e commit 17fdcda

File tree

1 file changed

+84
-2
lines changed

1 file changed

+84
-2
lines changed

clang/lib/CIR/CodeGen/CIRGenDecl.cpp

Lines changed: 84 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,11 +268,87 @@ void CIRGenFunction::emitExprAsInit(const Expr *init, const ValueDecl *d,
268268

269269
void CIRGenFunction::emitDecl(const Decl &d) {
270270
switch (d.getKind()) {
271-
case Decl::LinkageSpec:
271+
case Decl::BuiltinTemplate:
272+
case Decl::TranslationUnit:
273+
case Decl::ExternCContext:
272274
case Decl::Namespace:
275+
case Decl::UnresolvedUsingTypename:
276+
case Decl::ClassTemplateSpecialization:
277+
case Decl::ClassTemplatePartialSpecialization:
278+
case Decl::VarTemplateSpecialization:
279+
case Decl::VarTemplatePartialSpecialization:
280+
case Decl::TemplateTypeParm:
281+
case Decl::UnresolvedUsingValue:
282+
case Decl::NonTypeTemplateParm:
283+
case Decl::CXXDeductionGuide:
284+
case Decl::CXXMethod:
285+
case Decl::CXXConstructor:
286+
case Decl::CXXDestructor:
287+
case Decl::CXXConversion:
288+
case Decl::Field:
289+
case Decl::MSProperty:
290+
case Decl::IndirectField:
291+
case Decl::ObjCIvar:
292+
case Decl::ObjCAtDefsField:
293+
case Decl::ParmVar:
294+
case Decl::ImplicitParam:
295+
case Decl::ClassTemplate:
296+
case Decl::VarTemplate:
297+
case Decl::FunctionTemplate:
298+
case Decl::TypeAliasTemplate:
299+
case Decl::TemplateTemplateParm:
300+
case Decl::ObjCMethod:
301+
case Decl::ObjCCategory:
302+
case Decl::ObjCProtocol:
303+
case Decl::ObjCInterface:
304+
case Decl::ObjCCategoryImpl:
305+
case Decl::ObjCImplementation:
306+
case Decl::ObjCProperty:
307+
case Decl::ObjCCompatibleAlias:
308+
case Decl::PragmaComment:
309+
case Decl::PragmaDetectMismatch:
310+
case Decl::AccessSpec:
311+
case Decl::LinkageSpec:
312+
case Decl::Export:
313+
case Decl::ObjCPropertyImpl:
314+
case Decl::FileScopeAsm:
315+
case Decl::Friend:
316+
case Decl::FriendTemplate:
317+
case Decl::Block:
318+
case Decl::OutlinedFunction:
319+
case Decl::Captured:
320+
case Decl::UsingShadow:
321+
case Decl::ConstructorUsingShadow:
322+
case Decl::ObjCTypeParam:
323+
case Decl::Binding:
324+
case Decl::UnresolvedUsingIfExists:
273325
llvm_unreachable("Declaration should not be in declstmts!");
274326

327+
case Decl::Function: // void X();
328+
case Decl::EnumConstant: // enum ? { X = ? }
329+
case Decl::StaticAssert: // static_assert(X, ""); [C++0x]
330+
case Decl::Label: // __label__ x;
331+
case Decl::Import:
332+
case Decl::MSGuid: // __declspec(uuid("..."))
333+
case Decl::TemplateParamObject:
334+
case Decl::OMPThreadPrivate:
335+
case Decl::OMPAllocate:
336+
case Decl::OMPCapturedExpr:
337+
case Decl::OMPRequires:
338+
case Decl::Empty:
339+
case Decl::Concept:
340+
case Decl::LifetimeExtendedTemporary:
341+
case Decl::RequiresExprBody:
342+
case Decl::UnnamedGlobalConstant:
343+
// None of these decls require codegen support.
344+
return;
345+
346+
case Decl::Enum: // enum X;
275347
case Decl::Record: // struct/union/class X;
348+
case Decl::CXXRecord: // struct/union/class X; [C++]
349+
case Decl::NamespaceAlias:
350+
case Decl::Using: // using X; [C++]
351+
case Decl::UsingEnum: // using enum X; [C++]
276352
case Decl::UsingDirective: // using namespace X; [C++]
277353
assert(!cir::MissingFeatures::generateDebugInfo());
278354
return;
@@ -297,7 +373,13 @@ void CIRGenFunction::emitDecl(const Decl &d) {
297373
cgm.errorNYI(d.getSourceRange(), "emitDecl: variably modified type");
298374
return;
299375
}
300-
default:
376+
case Decl::ImplicitConceptSpecialization:
377+
case Decl::HLSLBuffer:
378+
case Decl::TopLevelStmt:
379+
case Decl::UsingPack:
380+
case Decl::Decomposition: // This could be moved to join Decl::Var
381+
case Decl::OMPDeclareReduction:
382+
case Decl::OMPDeclareMapper:
301383
cgm.errorNYI(d.getSourceRange(),
302384
std::string("emitDecl: unhandled decl type: ") +
303385
d.getDeclKindName());

0 commit comments

Comments
 (0)