Lines Matching defs:sym
82 for (const semantics::Symbol *sym : allPrivatizedSymbols)
83 if (semantics::IsAllocatable(sym->GetUltimate())) {
85 converter.createHostAssociateVarCloneDealloc(*sym);
89 lower::SymbolBox hsb = converter.lookupOneLevelUpSymbol(*sym);
93 fir::ExtendedValue symExV = converter.getSymbolExtendedValue(*sym);
94 mlir::omp::PrivateClauseOp privatizer = symToPrivatizer.at(sym);
105 symTable.addSymbol(*sym,
108 converter.createHostAssociateVarCloneDealloc(*sym);
113 void DataSharingProcessor::cloneSymbol(const semantics::Symbol *sym) {
114 bool isFirstPrivate = sym->test(semantics::Symbol::Flag::OmpFirstPrivate);
116 *sym, /*skipDefaultInit=*/isFirstPrivate);
125 SymbolBox sb = symTable.lookupSymbol(sym);
134 Fortran::lower::initializeCloneAtRuntime(converter, *sym, symTable);
140 const semantics::Symbol *sym, mlir::OpBuilder::InsertPoint *copyAssignIP) {
141 if (sym->test(semantics::Symbol::Flag::OmpFirstPrivate))
142 converter.copyHostAssociateVar(*sym, copyAssignIP);
146 const semantics::Symbol *sym, mlir::OpBuilder::InsertPoint *lastPrivIP) {
147 if (sym->test(semantics::Symbol::Flag::OmpLastPrivate))
148 converter.copyHostAssociateVar(*sym, lastPrivIP, /*hostIsSource=*/false);
155 symbolSet.insert(object.sym());
176 for (auto *sym : explicitlyPrivatizedSymbols)
177 allPrivatizedSymbols.insert(sym);
185 for (const semantics::Symbol *sym : allPrivatizedSymbols) {
186 if (sym->test(semantics::Symbol::Flag::OmpLastPrivate) &&
187 (sym->test(semantics::Symbol::Flag::OmpFirstPrivate) || callsInitClone))
380 auto isPrivatizable = [](const semantics::Symbol &sym) -> bool {
381 return !semantics::IsProcedure(sym) &&
382 !sym.GetUltimate().has<semantics::DerivedTypeDetails>() &&
383 !sym.GetUltimate().has<semantics::NamelistDetails>() &&
384 !semantics::IsImpliedDoIndex(sym.GetUltimate()) &&
385 !semantics::IsStmtFunction(sym);
388 auto shouldCollectSymbol = [&](const semantics::Symbol *sym) {
390 return sym->test(semantics::Symbol::Flag::OmpImplicit);
393 return sym->test(semantics::Symbol::Flag::OmpPreDetermined);
395 return !sym->test(semantics::Symbol::Flag::OmpImplicit) &&
396 !sym->test(semantics::Symbol::Flag::OmpPreDetermined);
399 for (const auto *sym : allSymbols) {
401 if (isPrivatizable(*sym) && !symbolsInNestedRegions.contains(sym) &&
402 !explicitlyPrivatizedSymbols.contains(sym) &&
403 shouldCollectSymbol(sym) && clauseScopes.contains(&sym->owner())) {
404 allPrivatizedSymbols.insert(sym);
405 symbols.insert(sym);
437 for (const semantics::Symbol *sym : allPrivatizedSymbols) {
439 sym->detailsIf<semantics::CommonBlockDetails>()) {
443 doPrivatize(sym, clauseOps);
449 for (const semantics::Symbol *sym : allPrivatizedSymbols)
451 sym->detailsIf<semantics::CommonBlockDetails>()) {
456 copyLastPrivateSymbol(sym, &lastPrivIP);
460 void DataSharingProcessor::doPrivatize(const semantics::Symbol *sym,
463 cloneSymbol(sym);
464 copyFirstPrivateSymbol(sym);
468 lower::SymbolBox hsb = converter.lookupOneLevelUpSymbol(*sym);
473 std::string privatizerName = sym->name().ToString() + ".privatizer";
474 bool isFirstPrivate = sym->test(semantics::Symbol::Flag::OmpFirstPrivate);
480 converter.mangleName(*sym) +
494 fir::ExtendedValue symExV = converter.getSymbolExtendedValue(*sym);
509 evaluate::IsSimplyContiguous(*sym, converter.getFoldingContext()))
512 symTable.addSymbol(*sym, localExV);
514 cloneSymbol(sym);
515 mlir::Value cloneAddr = symTable.shallowLookupSymbol(*sym).getAddr();
544 *sym, fir::substBase(box, copyRegion.getArgument(argIdx)),
548 symTable.addSymbol(*sym, copyRegion.getArgument(argIdx), force);
557 copyFirstPrivateSymbol(sym, &ip);
560 hsb.getAddr().getLoc(), symTable.shallowLookupSymbol(*sym).getAddr());
571 symToPrivatizer[sym] = privatizerOp;