FLANG
Macros
MapInfoFinalization.cpp File Reference
#include "flang/Lower/DirectivesCommon.h"
#include "flang/Optimizer/Builder/FIRBuilder.h"
#include "flang/Optimizer/Builder/HLFIRTools.h"
#include "flang/Optimizer/Dialect/FIRType.h"
#include "flang/Optimizer/Dialect/Support/KindMapping.h"
#include "flang/Optimizer/HLFIR/HLFIROps.h"
#include "flang/Optimizer/OpenMP/Passes.h"
#include "mlir/Analysis/SliceAnalysis.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/OpenMP/OpenMPDialect.h"
#include "mlir/IR/BuiltinDialect.h"
#include "mlir/IR/BuiltinOps.h"
#include "mlir/IR/Operation.h"
#include "mlir/IR/SymbolTable.h"
#include "mlir/Pass/Pass.h"
#include "mlir/Support/LLVM.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/Frontend/OpenMP/OMPConstants.h"
#include <algorithm>
#include <cstddef>
#include <iterator>
#include <numeric>
#include "flang/Optimizer/OpenMP/Passes.h.inc"

Detailed Description

An OpenMP dialect related pass for FIR/HLFIR which performs some pre-processing of MapInfoOp's after the module has been lowered to finalize them.

For example, it expands MapInfoOp's containing descriptor related types (fir::BoxType's) into multiple MapInfoOp's containing the parent descriptor and pointer member components for individual mapping, treating the descriptor type as a record type for later lowering in the OpenMP dialect.

The pass also adds MapInfoOp's that are members of a parent object but are not directly used in the body of a target region to its BlockArgument list to maintain consistency across all MapInfoOp's tied to a region directly or indirectly via a parent object.