@@ -268,11 +268,87 @@ void CIRGenFunction::emitExprAsInit(const Expr *init, const ValueDecl *d,
268268
269269void 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