reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
12340 if (var->isInvalidDecl()) return; 12345 if (var->getTypeSourceInfo()->getType()->isBlockPointerType() && 12346 !var->hasInit()) { 12347 Diag(var->getLocation(), diag::err_opencl_invalid_block_declaration) 12349 var->setInvalidDecl(); 12357 var->hasLocalStorage()) { 12358 switch (var->getType().getObjCLifetime()) { 12371 if (var->hasLocalStorage() && 12372 var->getType().isDestructedType() == QualType::DK_nontrivial_c_struct) 12380 if (var->isThisDeclarationADefinition() && 12381 var->getDeclContext()->getRedeclContext()->isFileContext() && 12382 var->isExternallyVisible() && var->hasLinkage() && 12382 var->isExternallyVisible() && var->hasLinkage() && 12383 !var->isInline() && !var->getDescribedVarTemplate() && 12383 !var->isInline() && !var->getDescribedVarTemplate() && 12384 !isTemplateInstantiation(var->getTemplateSpecializationKind()) && 12386 var->getLocation())) { 12388 VarDecl *prev = var->getPreviousDecl(); 12393 Diag(var->getLocation(), diag::warn_missing_variable_declarations) << var; 12393 Diag(var->getLocation(), diag::warn_missing_variable_declarations) << var; 12394 Diag(var->getTypeSpecStartLoc(), diag::note_static_for_internal_linkage) 12404 CacheHasConstInit = var->getInit()->isConstantInitializer( 12405 Context, var->getType()->isReferenceType(), &CacheCulprit); 12409 if (var->getTLSKind() == VarDecl::TLS_Static) { 12410 if (var->getType().isDestructedType()) { 12414 Diag(var->getLocation(), diag::err_thread_nontrivial_dtor); 12416 Diag(var->getLocation(), diag::note_use_thread_local); 12417 } else if (getLangOpts().CPlusPlus && var->hasInit()) { 12426 Diag(var->getLocation(), diag::note_use_thread_local); 12432 bool GlobalStorage = var->hasGlobalStorage(); 12433 if (GlobalStorage && var->isThisDeclarationADefinition() && 12437 if (var->getType().isConstQualified()) 12439 else if (!var->getInit()) { 12446 if (Stack->CurrentValue && !var->hasAttr<SectionAttr>()) 12447 var->addAttr(SectionAttr::CreateImplicit( 12451 if (const SectionAttr *SA = var->getAttr<SectionAttr>()) 12452 if (UnifySection(SA->getName(), SectionFlags, var)) 12453 var->dropAttr<SectionAttr>(); 12458 if (CurInitSeg && var->getInit()) 12459 var->addAttr(InitSegAttr::CreateImplicit(Context, CurInitSeg->getString(), 12468 if (Context.DeclMustBeEmitted(var) && !ModuleScopes.empty()) 12469 Context.addModuleInitializer(ModuleScopes.back().Module, var); 12473 if (auto *DD = dyn_cast<DecompositionDecl>(var)) 12476 QualType type = var->getType(); 12479 if (var->hasAttr<BlocksAttr>()) 12480 getCurFunction()->addByrefBlockVar(var); 12482 Expr *Init = var->getInit(); 12483 bool IsGlobal = GlobalStorage && !var->isStaticLocal(); 12487 if (var->isConstexpr()) { 12489 if (!var->evaluateValue(Notes) || !var->isInitICE()) { 12489 if (!var->evaluateValue(Notes) || !var->isInitICE()) { 12490 SourceLocation DiagLoc = var->getLocation(); 12499 << var << Init->getSourceRange(); 12503 } else if (var->mightBeUsableInConstantExpressions(Context)) { 12507 var->checkInitIsICE(); 12512 if (!var->isConstexpr() && GlobalStorage && var->hasAttr<ConstInitAttr>()) { 12512 if (!var->isConstexpr() && GlobalStorage && var->hasAttr<ConstInitAttr>()) { 12515 ? !var->checkInitIsICE() : !checkConstInit(); 12517 auto *Attr = var->getAttr<ConstInitAttr>(); 12518 Diag(var->getLocation(), diag::err_require_constant_init_failed) 12526 Init->EvaluateAsInitializer(Value, getASTContext(), var, Notes); 12536 else if (!var->isConstexpr() && IsGlobal && 12538 var->getLocation())) { 12545 Diag(var->getLocation(), diag::warn_global_constructor) 12553 FinalizeVarWithDestructor(var, recordType); 12557 if (Context.DeclMustBeEmitted(var) && !ModuleScopes.empty()) 12558 Context.addModuleInitializer(ModuleScopes.back().Module, var);