reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/Sema/SemaDecl.cpp
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);