Lines Matching refs:VD

558 bool IsDependentVar(VarDecl *VD) {  in IsDependentVar()  argument
559 if (VD->getType()->isDependentType()) in IsDependentVar()
561 if (const auto *Init = VD->getInit()) in IsDependentVar()
575 bool HasAllowedCUDADeviceStaticInitializer(Sema &S, VarDecl *VD, in HasAllowedCUDADeviceStaticInitializer() argument
577 assert(!VD->isInvalidDecl() && VD->hasGlobalStorage()); in HasAllowedCUDADeviceStaticInitializer()
578 assert(!IsDependentVar(VD) && "do not check dependent var"); in HasAllowedCUDADeviceStaticInitializer()
579 const Expr *Init = VD->getInit(); in HasAllowedCUDADeviceStaticInitializer()
584 return S.isEmptyCudaConstructor(VD->getLocation(), CE->getConstructor()); in HasAllowedCUDADeviceStaticInitializer()
593 VD->getType()->isReferenceType()); in HasAllowedCUDADeviceStaticInitializer()
595 auto HasEmptyDtor = [&](VarDecl *VD) { in HasAllowedCUDADeviceStaticInitializer() argument
596 if (const auto *RD = VD->getType()->getAsCXXRecordDecl()) in HasAllowedCUDADeviceStaticInitializer()
597 return S.isEmptyCudaDestructor(VD->getLocation(), RD->getDestructor()); in HasAllowedCUDADeviceStaticInitializer()
601 return IsEmptyInit(Init) && HasEmptyDtor(VD); in HasAllowedCUDADeviceStaticInitializer()
603 ((IsEmptyInit(Init) || IsConstantInit(Init)) && HasEmptyDtor(VD)); in HasAllowedCUDADeviceStaticInitializer()
607 void Sema::checkAllowedCUDAInitializer(VarDecl *VD) { in checkAllowedCUDAInitializer() argument
610 if (VD->isInvalidDecl() || !VD->hasInit() || !VD->hasGlobalStorage() || in checkAllowedCUDAInitializer()
611 IsDependentVar(VD)) in checkAllowedCUDAInitializer()
613 const Expr *Init = VD->getInit(); in checkAllowedCUDAInitializer()
614 bool IsSharedVar = VD->hasAttr<CUDASharedAttr>(); in checkAllowedCUDAInitializer()
617 (VD->hasAttr<CUDADeviceAttr>() || VD->hasAttr<CUDAConstantAttr>()); in checkAllowedCUDAInitializer()
620 *this, VD, IsSharedVar ? CICK_Shared : CICK_DeviceOrConstant)) in checkAllowedCUDAInitializer()
622 Diag(VD->getLocation(), in checkAllowedCUDAInitializer()
625 VD->setInvalidDecl(); in checkAllowedCUDAInitializer()
638 Diag(VD->getLocation(), diag::err_ref_bad_target_global_initializer) in checkAllowedCUDAInitializer()
641 VD->setInvalidDecl(); in checkAllowedCUDAInitializer()
711 void Sema::MaybeAddCUDAConstantAttr(VarDecl *VD) { in MaybeAddCUDAConstantAttr() argument
714 if (getLangOpts().CUDAIsDevice && !VD->hasAttr<CUDAConstantAttr>() && in MaybeAddCUDAConstantAttr()
715 !VD->hasAttr<CUDASharedAttr>() && in MaybeAddCUDAConstantAttr()
716 (VD->isFileVarDecl() || VD->isStaticDataMember()) && in MaybeAddCUDAConstantAttr()
717 !IsDependentVar(VD) && in MaybeAddCUDAConstantAttr()
718 ((VD->isConstexpr() || VD->getType().isConstQualified()) && in MaybeAddCUDAConstantAttr()
719 HasAllowedCUDADeviceStaticInitializer(*this, VD, in MaybeAddCUDAConstantAttr()
721 VD->addAttr(CUDAConstantAttr::CreateImplicit(getASTContext())); in MaybeAddCUDAConstantAttr()