@@ -268,11 +268,87 @@ void CIRGenFunction::emitExprAsInit(const Expr *init, const ValueDecl *d,
268
268
269
269
void CIRGenFunction::emitDecl (const Decl &d) {
270
270
switch (d.getKind ()) {
271
- case Decl::LinkageSpec:
271
+ case Decl::BuiltinTemplate:
272
+ case Decl::TranslationUnit:
273
+ case Decl::ExternCContext:
272
274
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:
273
325
llvm_unreachable (" Declaration should not be in declstmts!" );
274
326
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;
275
347
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++]
276
352
case Decl::UsingDirective: // using namespace X; [C++]
277
353
assert (!cir::MissingFeatures::generateDebugInfo ());
278
354
return ;
@@ -297,7 +373,13 @@ void CIRGenFunction::emitDecl(const Decl &d) {
297
373
cgm.errorNYI (d.getSourceRange (), " emitDecl: variably modified type" );
298
374
return ;
299
375
}
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:
301
383
cgm.errorNYI (d.getSourceRange (),
302
384
std::string (" emitDecl: unhandled decl type: " ) +
303
385
d.getDeclKindName ());
0 commit comments