Lines Matching refs:VD

123   auto *VD = dyn_cast_or_null<VarDecl>(D);  in CUDATargetContextRAII()  local
124 if (VD && VD->hasGlobalStorage() && !VD->isStaticLocal()) { in CUDATargetContextRAII()
126 if ((hasAttr<CUDADeviceAttr>(VD, /*IgnoreImplicit=*/true) && in CUDATargetContextRAII()
127 !hasAttr<CUDAHostAttr>(VD, /*IgnoreImplicit=*/true)) || in CUDATargetContextRAII()
128 hasAttr<CUDASharedAttr>(VD, /*IgnoreImplicit=*/true) || in CUDATargetContextRAII()
129 hasAttr<CUDAConstantAttr>(VD, /*IgnoreImplicit=*/true)) in CUDATargetContextRAII()
131 S.CurCUDATargetCtx = {Target, K, VD}; in CUDATargetContextRAII()
609 bool IsDependentVar(VarDecl *VD) { in IsDependentVar() argument
610 if (VD->getType()->isDependentType()) in IsDependentVar()
612 if (const auto *Init = VD->getInit()) in IsDependentVar()
626 bool HasAllowedCUDADeviceStaticInitializer(SemaCUDA &S, VarDecl *VD, in HasAllowedCUDADeviceStaticInitializer() argument
628 assert(!VD->isInvalidDecl() && VD->hasGlobalStorage()); in HasAllowedCUDADeviceStaticInitializer()
629 assert(!IsDependentVar(VD) && "do not check dependent var"); in HasAllowedCUDADeviceStaticInitializer()
630 const Expr *Init = VD->getInit(); in HasAllowedCUDADeviceStaticInitializer()
635 return S.isEmptyConstructor(VD->getLocation(), CE->getConstructor()); in HasAllowedCUDADeviceStaticInitializer()
644 VD->getType()->isReferenceType()); in HasAllowedCUDADeviceStaticInitializer()
646 auto HasEmptyDtor = [&](VarDecl *VD) { in HasAllowedCUDADeviceStaticInitializer() argument
647 if (const auto *RD = VD->getType()->getAsCXXRecordDecl()) in HasAllowedCUDADeviceStaticInitializer()
648 return S.isEmptyDestructor(VD->getLocation(), RD->getDestructor()); in HasAllowedCUDADeviceStaticInitializer()
652 return IsEmptyInit(Init) && HasEmptyDtor(VD); in HasAllowedCUDADeviceStaticInitializer()
654 ((IsEmptyInit(Init) || IsConstantInit(Init)) && HasEmptyDtor(VD)); in HasAllowedCUDADeviceStaticInitializer()
658 void SemaCUDA::checkAllowedInitializer(VarDecl *VD) { in checkAllowedInitializer() argument
662 dyn_cast_or_null<FunctionDecl>(VD->getDeclContext())) in checkAllowedInitializer()
668 if (VD->isInvalidDecl() || !VD->hasInit() || !VD->hasGlobalStorage() || in checkAllowedInitializer()
669 IsDependentVar(VD)) in checkAllowedInitializer()
671 const Expr *Init = VD->getInit(); in checkAllowedInitializer()
672 bool IsSharedVar = VD->hasAttr<CUDASharedAttr>(); in checkAllowedInitializer()
675 (VD->hasAttr<CUDADeviceAttr>() || VD->hasAttr<CUDAConstantAttr>()); in checkAllowedInitializer()
678 *this, VD, IsSharedVar ? CICK_Shared : CICK_DeviceOrConstant)) in checkAllowedInitializer()
680 Diag(VD->getLocation(), in checkAllowedInitializer()
683 VD->setInvalidDecl(); in checkAllowedInitializer()
697 Diag(VD->getLocation(), diag::err_ref_bad_target_global_initializer) in checkAllowedInitializer()
700 VD->setInvalidDecl(); in checkAllowedInitializer()
805 void SemaCUDA::MaybeAddConstantAttr(VarDecl *VD) { in MaybeAddConstantAttr() argument
808 if (getLangOpts().CUDAIsDevice && !VD->hasAttr<CUDAConstantAttr>() && in MaybeAddConstantAttr()
809 !VD->hasAttr<CUDASharedAttr>() && in MaybeAddConstantAttr()
810 (VD->isFileVarDecl() || VD->isStaticDataMember()) && in MaybeAddConstantAttr()
811 !IsDependentVar(VD) && in MaybeAddConstantAttr()
812 ((VD->isConstexpr() || VD->getType().isConstQualified()) && in MaybeAddConstantAttr()
813 HasAllowedCUDADeviceStaticInitializer(*this, VD, in MaybeAddConstantAttr()
815 VD->addAttr(CUDAConstantAttr::CreateImplicit(getASTContext())); in MaybeAddConstantAttr()