Lines Matching defs:funit

472   void declareFunction(Fortran::lower::pft::FunctionLikeUnit &funit) {
473 setCurrentPosition(funit.getStartingSourceLoc());
474 for (int entryIndex = 0, last = funit.entryPointList.size();
476 funit.setActiveEntry(entryIndex);
485 Fortran::lower::CalleeInterface{funit, *this};
487 funit.setActiveEntry(0);
491 for (Fortran::lower::pft::ContainedUnit &unit : funit.containedUnitList)
494 funit.setHostAssociatedSymbols(escapeHost);
497 for (Fortran::lower::pft::ContainedUnit &unit : funit.containedUnitList)
519 Fortran::lower::pft::FunctionLikeUnit &funit,
522 funit.getSubprogramSymbol().scope();
552 Fortran::lower::pft::visitAllSymbols(funit, addToListIfEscapee);
1757 void genFIRProcedureExit(Fortran::lower::pft::FunctionLikeUnit &funit,
1759 if (mlir::Block *finalBlock = funit.finalBlock) {
2909 Fortran::lower::pft::FunctionLikeUnit *funit =
2911 assert(funit && "not inside main program, function or subroutine");
2915 funit->finalBlock, continueBlock);
5109 Fortran::lower::pft::FunctionLikeUnit *funit =
5111 assert(funit && "not inside main program, function or subroutine");
5117 if (funit->isMainProgram()) {
5127 const Fortran::semantics::Symbol &symbol = funit->getSubprogramSymbol();
5140 if (!funit->finalBlock) {
5143 funit->finalBlock = builder->createBlock(&builder->getRegion());
5150 builder->create<mlir::cf::BranchOp>(loc, funit->finalBlock);
5215 void mapDummiesAndResults(Fortran::lower::pft::FunctionLikeUnit &funit,
5235 assert(funit.parentHasTupleHostAssoc() && "expect tuple argument");
5250 if (funit.primaryResult &&
5251 passedResult->entity->get() != *funit.primaryResult)
5253 *funit.primaryResult, getSymbolAddress(passedResult->entity->get()),
5269 void manageFPEnvironment(Fortran::lower::pft::FunctionLikeUnit &funit) {
5272 toLocation(Fortran::lower::pft::stmtSourceLoc(funit.endStmt));
5273 if (funit.hasIeeeAccess) {
5291 if (funit.mayModifyHaltingMode) {
5309 if (funit.mayModifyRoundingMode) {
5323 if ((funit.mayModifyUnderflowMode) &&
5338 void startNewFunction(Fortran::lower::pft::FunctionLikeUnit &funit) {
5342 const Fortran::semantics::Scope &scope = funit.getScope();
5346 Fortran::lower::CalleeInterface callee(funit, *this);
5353 if (funit.parent.isA<Fortran::lower::pft::FunctionLikeUnit>()) {
5368 if (!funit.isMainProgram())
5369 manageFPEnvironment(funit);
5371 mapDummiesAndResults(funit, callee);
5374 if (funit.parentHasHostAssoc())
5375 funit.parentHostAssoc().internalProcedureBindings(*this, localSymbols);
5396 Fortran::lower::pft::getScopeVariableListMap(funit);
5414 if (funit.parentHasHostAssoc()) {
5419 if (funit.parentHostAssoc().isAssociated(ultimate)) {
5424 if (!sym.IsFuncResult() || !funit.primaryResult) {
5426 } else if (&sym == funit.primaryResult) {
5483 if (!funit.getHostAssoc().empty())
5484 funit.getHostAssoc().hostProcedureBindings(*this, localSymbols);
5492 createEmptyBlocks(funit.evaluationList);
5502 const Fortran::semantics::Symbol &symbol = funit.getSubprogramSymbol();
5513 funit.getEntryEval())
5586 void endNewFunction(Fortran::lower::pft::FunctionLikeUnit &funit) {
5587 setCurrentPosition(Fortran::lower::pft::stmtSourceLoc(funit.endStmt));
5588 if (funit.isMainProgram()) {
5591 genFIRProcedureExit(funit, funit.getSubprogramSymbol());
5593 funit.finalBlock = nullptr;
5595 if (auto *sym = funit.scope->symbol()) llvm::dbgs()
5705 void lowerFunc(Fortran::lower::pft::FunctionLikeUnit &funit) {
5706 setCurrentPosition(funit.getStartingSourceLoc());
5707 setCurrentFunctionUnit(&funit);
5708 for (int entryIndex = 0, last = funit.entryPointList.size();
5710 funit.setActiveEntry(entryIndex);
5711 startNewFunction(funit); // the entry point for lowering this procedure
5712 for (Fortran::lower::pft::Evaluation &eval : funit.evaluationList)
5714 endNewFunction(funit);
5716 funit.setActiveEntry(0);
5718 for (Fortran::lower::pft::ContainedUnit &unit : funit.containedUnitList)