summaryrefslogtreecommitdiff
path: root/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'flang/lib/Lower/OpenMP/DataSharingProcessor.cpp')
-rw-r--r--flang/lib/Lower/OpenMP/DataSharingProcessor.cpp34
1 files changed, 3 insertions, 31 deletions
diff --git a/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp b/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp
index 03109c82a976..8b334d7a392a 100644
--- a/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp
+++ b/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp
@@ -12,10 +12,10 @@
#include "DataSharingProcessor.h"
-#include "PrivateReductionUtils.h"
#include "Utils.h"
#include "flang/Lower/ConvertVariable.h"
#include "flang/Lower/PFTBuilder.h"
+#include "flang/Lower/Support/PrivateReductionUtils.h"
#include "flang/Lower/Support/Utils.h"
#include "flang/Lower/SymbolMap.h"
#include "flang/Optimizer/Builder/BoxValue.h"
@@ -537,38 +537,10 @@ void DataSharingProcessor::privatizeSymbol(
return;
}
- auto initGen = [&](mlir::omp::PrivateClauseOp result, mlir::Type argType) {
- lower::SymbolBox hsb = converter.lookupOneLevelUpSymbol(*symToPrivatize);
- assert(hsb && "Host symbol box not found");
- hlfir::Entity entity{hsb.getAddr()};
- bool cannotHaveNonDefaultLowerBounds =
- !entity.mayHaveNonDefaultLowerBounds();
-
- mlir::Region &initRegion = result.getInitRegion();
- mlir::Location symLoc = hsb.getAddr().getLoc();
- mlir::Block *initBlock = firOpBuilder.createBlock(
- &initRegion, /*insertPt=*/{}, {argType, argType}, {symLoc, symLoc});
-
- bool emitCopyRegion =
- symToPrivatize->test(semantics::Symbol::Flag::OmpFirstPrivate);
-
- populateByRefInitAndCleanupRegions(
- converter, symLoc, argType, /*scalarInitValue=*/nullptr, initBlock,
- result.getInitPrivateArg(), result.getInitMoldArg(),
- result.getDeallocRegion(),
- emitCopyRegion ? omp::DeclOperationKind::FirstPrivate
- : omp::DeclOperationKind::Private,
- symToPrivatize, cannotHaveNonDefaultLowerBounds);
- // TODO: currently there are false positives from dead uses of the mold
- // arg
- if (result.initReadsFromMold())
- mightHaveReadHostSym.insert(symToPrivatize);
- };
-
Fortran::lower::privatizeSymbol<mlir::omp::PrivateClauseOp,
mlir::omp::PrivateClauseOps>(
- converter, firOpBuilder, symTable, initGen, allPrivatizedSymbols,
- symToPrivatize, clauseOps);
+ converter, firOpBuilder, symTable, allPrivatizedSymbols,
+ mightHaveReadHostSym, symToPrivatize, clauseOps);
}
} // namespace omp
} // namespace lower