Lines Matching refs:funit
245 void declareFunction(Fortran::lower::pft::FunctionLikeUnit &funit) { in declareFunction() argument
246 setCurrentPosition(funit.getStartingSourceLoc()); in declareFunction()
247 for (int entryIndex = 0, last = funit.entryPointList.size(); in declareFunction()
249 funit.setActiveEntry(entryIndex); in declareFunction()
258 Fortran::lower::CalleeInterface{funit, *this}; in declareFunction()
260 funit.setActiveEntry(0); in declareFunction()
264 for (Fortran::lower::pft::FunctionLikeUnit &f : funit.nestedFunctions) in declareFunction()
266 funit.setHostAssociatedSymbols(escapeHost); in declareFunction()
269 for (Fortran::lower::pft::FunctionLikeUnit &f : funit.nestedFunctions) in declareFunction()
277 Fortran::lower::pft::FunctionLikeUnit &funit, in collectHostAssociatedVariables() argument
280 funit.getSubprogramSymbol().scope(); in collectHostAssociatedVariables()
310 Fortran::lower::pft::visitAllSymbols(funit, addToListIfEscapee); in collectHostAssociatedVariables()
844 void genFIRProcedureExit(Fortran::lower::pft::FunctionLikeUnit &funit, in genFIRProcedureExit() argument
846 if (mlir::Block *finalBlock = funit.finalBlock) { in genFIRProcedureExit()
2526 Fortran::lower::pft::FunctionLikeUnit *funit = in genFIR() local
2528 assert(funit && "not inside main program, function or subroutine"); in genFIR()
2529 if (funit->isMainProgram()) { in genFIR()
2539 const Fortran::semantics::Symbol &symbol = funit->getSubprogramSymbol(); in genFIR()
2552 if (!funit->finalBlock) { in genFIR()
2554 funit->finalBlock = builder->createBlock(&builder->getRegion()); in genFIR()
2557 builder->create<mlir::cf::BranchOp>(loc, funit->finalBlock); in genFIR()
2625 void mapDummiesAndResults(Fortran::lower::pft::FunctionLikeUnit &funit, in mapDummiesAndResults() argument
2642 assert(funit.parentHasHostAssoc()); in mapDummiesAndResults()
2643 funit.parentHostAssoc().internalProcedureBindings(*this, in mapDummiesAndResults()
2655 if (funit.primaryResult && in mapDummiesAndResults()
2656 passedResult->entity->get() != *funit.primaryResult) in mapDummiesAndResults()
2657 addSymbol(*funit.primaryResult, in mapDummiesAndResults()
2674 void startNewFunction(Fortran::lower::pft::FunctionLikeUnit &funit) { in startNewFunction() argument
2676 Fortran::lower::CalleeInterface callee(funit, *this); in startNewFunction()
2683 mapDummiesAndResults(funit, callee); in startNewFunction()
2704 Fortran::lower::pft::ModuleLikeUnit>(funit)) in startNewFunction()
2711 funit.getOrderedSymbolTable()) { in startNewFunction()
2718 if (funit.parentHasHostAssoc()) { in startNewFunction()
2723 if (funit.parentHostAssoc().isAssociated(ultimate)) { in startNewFunction()
2731 if (!sym.IsFuncResult() || !funit.primaryResult) { in startNewFunction()
2733 } else if (&sym == funit.primaryResult) { in startNewFunction()
2757 if (!funit.getHostAssoc().empty()) in startNewFunction()
2758 funit.getHostAssoc().hostProcedureBindings(*this, localSymbols); in startNewFunction()
2761 createEmptyBlocks(funit.evaluationList); in startNewFunction()
2771 const Fortran::semantics::Symbol &symbol = funit.getSubprogramSymbol(); in startNewFunction()
2782 funit.getEntryEval()) in startNewFunction()
2845 void endNewFunction(Fortran::lower::pft::FunctionLikeUnit &funit) { in endNewFunction() argument
2846 setCurrentPosition(Fortran::lower::pft::stmtSourceLoc(funit.endStmt)); in endNewFunction()
2847 if (funit.isMainProgram()) in endNewFunction()
2850 genFIRProcedureExit(funit, funit.getSubprogramSymbol()); in endNewFunction()
2851 funit.finalBlock = nullptr; in endNewFunction()
2908 void lowerFunc(Fortran::lower::pft::FunctionLikeUnit &funit) { in lowerFunc() argument
2909 if (!funit.isMainProgram()) { in lowerFunc()
2911 funit.getSubprogramSymbol(); in lowerFunc()
2917 setCurrentPosition(funit.getStartingSourceLoc()); in lowerFunc()
2918 for (int entryIndex = 0, last = funit.entryPointList.size(); in lowerFunc()
2920 funit.setActiveEntry(entryIndex); in lowerFunc()
2921 startNewFunction(funit); // the entry point for lowering this procedure in lowerFunc()
2922 for (Fortran::lower::pft::Evaluation &eval : funit.evaluationList) in lowerFunc()
2924 endNewFunction(funit); in lowerFunc()
2926 funit.setActiveEntry(0); in lowerFunc()
2927 for (Fortran::lower::pft::FunctionLikeUnit &f : funit.nestedFunctions) in lowerFunc()