Lines Matching refs:FD
181 void SemaHLSL::ActOnTopLevelFunction(FunctionDecl *FD) { in ActOnTopLevelFunction() argument
184 if (FD->getName() != TargetInfo.getTargetOpts().HLSLEntry) in ActOnTopLevelFunction()
189 if (const auto *Shader = FD->getAttr<HLSLShaderAttr>()) { in ActOnTopLevelFunction()
195 FD->setInvalidDecl(); in ActOnTopLevelFunction()
200 FD->addAttr(HLSLShaderAttr::CreateImplicit(getASTContext(), Env, in ActOnTopLevelFunction()
201 FD->getBeginLoc())); in ActOnTopLevelFunction()
214 void SemaHLSL::CheckEntryPoint(FunctionDecl *FD) { in CheckEntryPoint() argument
215 const auto *ShaderAttr = FD->getAttr<HLSLShaderAttr>(); in CheckEntryPoint()
231 if (const auto *NT = FD->getAttr<HLSLNumThreadsAttr>()) { in CheckEntryPoint()
236 FD->setInvalidDecl(); in CheckEntryPoint()
243 if (!FD->hasAttr<HLSLNumThreadsAttr>()) { in CheckEntryPoint()
244 Diag(FD->getLocation(), diag::err_hlsl_missing_numthreads) in CheckEntryPoint()
246 FD->setInvalidDecl(); in CheckEntryPoint()
253 for (ParmVarDecl *Param : FD->parameters()) { in CheckEntryPoint()
255 CheckSemanticAnnotation(FD, Param, AnnotationAttr); in CheckEntryPoint()
259 Diag(FD->getLocation(), diag::err_hlsl_missing_semantic_annotation); in CheckEntryPoint()
261 FD->setInvalidDecl(); in CheckEntryPoint()
624 void AddToScannedFunctions(const FunctionDecl *FD) { in AddToScannedFunctions() argument
625 unsigned &ScannedStages = ScannedDecls.getOrInsertDefault(FD); in AddToScannedFunctions()
629 unsigned GetScannedStages(const FunctionDecl *FD) { in GetScannedStages() argument
630 return ScannedDecls.getOrInsertDefault(FD); in GetScannedStages()
633 bool WasAlreadyScannedInCurrentStage(const FunctionDecl *FD) { in WasAlreadyScannedInCurrentStage() argument
634 return WasAlreadyScannedInCurrentStage(GetScannedStages(FD)); in WasAlreadyScannedInCurrentStage()
646 void HandleFunctionOrMethodRef(FunctionDecl *FD, Expr *RefExpr);
657 void RunOnFunction(const FunctionDecl *FD);
660 FunctionDecl *FD = llvm::dyn_cast<FunctionDecl>(DRE->getDecl()); in VisitDeclRefExpr() local
661 if (FD) in VisitDeclRefExpr()
662 HandleFunctionOrMethodRef(FD, DRE); in VisitDeclRefExpr()
667 FunctionDecl *FD = llvm::dyn_cast<FunctionDecl>(ME->getMemberDecl()); in VisitMemberExpr() local
668 if (FD) in VisitMemberExpr()
669 HandleFunctionOrMethodRef(FD, ME); in VisitMemberExpr()
674 void DiagnoseHLSLAvailability::HandleFunctionOrMethodRef(FunctionDecl *FD, in HandleFunctionOrMethodRef() argument
681 if (FD->hasBody(FDWithBody)) { in HandleFunctionOrMethodRef()
688 const AvailabilityAttr *AA = FindAvailabilityAttr(FD); in HandleFunctionOrMethodRef()
691 FD, AA, SourceRange(RefExpr->getBeginLoc(), RefExpr->getEndLoc())); in HandleFunctionOrMethodRef()
720 const FunctionDecl *FD = llvm::dyn_cast<FunctionDecl>(D); in RunOnTranslationUnit() local
721 if (!FD || !FD->isThisDeclarationADefinition()) in RunOnTranslationUnit()
725 if (HLSLShaderAttr *ShaderAttr = FD->getAttr<HLSLShaderAttr>()) { in RunOnTranslationUnit()
727 RunOnFunction(FD); in RunOnTranslationUnit()
733 bool isExport = FD->isInExportDeclContext(); in RunOnTranslationUnit()
735 for (const auto *Redecl : FD->redecls()) { in RunOnTranslationUnit()
744 RunOnFunction(FD); in RunOnTranslationUnit()
751 void DiagnoseHLSLAvailability::RunOnFunction(const FunctionDecl *FD) { in RunOnFunction() argument
753 DeclsToScan.push_back(FD); in RunOnFunction()
760 const FunctionDecl *FD = DeclsToScan.pop_back_val(); in RunOnFunction() local
763 const unsigned ScannedStages = GetScannedStages(FD); in RunOnFunction()
769 AddToScannedFunctions(FD); in RunOnFunction()
770 TraverseStmt(FD->getBody()); in RunOnFunction()