[flang-commits] [flang] [llvm] [mlir] [Flang][OpenMP] Update MapInfoFinalization to use BlockArgs Interface and modify use_device_ptr/addr to be order independent (PR #113919)
Sergio Afonso via flang-commits
flang-commits at lists.llvm.org
Thu Oct 31 07:24:15 PDT 2024
================
@@ -2999,23 +3007,21 @@ convertOmpTargetData(Operation *op, llvm::IRBuilderBase &builder,
[&moduleTranslation](
llvm::OpenMPIRBuilder::DeviceInfoTy type,
llvm::ArrayRef<BlockArgument> blockArgs,
- llvm::OpenMPIRBuilder::MapValuesArrayTy &basePointers,
- llvm::OpenMPIRBuilder::MapDeviceInfoArrayTy &devicePointers,
+ llvm::SmallVectorImpl<Value> &devicePtrVars, MapInfoData &mapInfoData,
llvm::function_ref<llvm::Value *(llvm::Value *)> mapper = nullptr) {
- // Get a range to iterate over `basePointers` after filtering based on
- // `devicePointers` and the given device info type.
- auto basePtrRange = llvm::map_range(
- llvm::make_filter_range(
- llvm::zip_equal(basePointers, devicePointers),
- [type](auto x) { return std::get<1>(x) == type; }),
- [](auto x) { return std::get<0>(x); });
-
- // Map block arguments to the corresponding processed base pointer. If
- // a mapper is not specified, map the block argument to the base pointer
- // directly.
- for (auto [arg, basePointer] : llvm::zip_equal(blockArgs, basePtrRange))
- moduleTranslation.mapValue(arg, mapper ? mapper(basePointer)
- : basePointer);
+ for (auto [arg, devPtrVar] :
+ llvm::zip_equal(blockArgs, devicePtrVars)) {
+ for (size_t i = 0; i < mapInfoData.MapClause.size(); ++i) {
+ if (mapInfoData.MapClause[i] == devPtrVar.getDefiningOp()) {
----------------
skatrak wrote:
Nit: Negate condition and `continue` to reduce nesting.
https://github.com/llvm/llvm-project/pull/113919
More information about the flang-commits
mailing list